selectinput.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. app.directive('selectInput', function($compile) {
  2. return {
  3. restrict: 'AE', //attribute or element
  4. // scope: {
  5. // requesdata: '=',
  6. // onChangeadd: '&'
  7. // //bindAttr: '='
  8. // },
  9. template: '<input type = "test" class="form-control" ng-change="changeKeyValue(searchField)" ng-model="searchField"' +
  10. 'ng-click = "checkclick($event)" value="{{searchField}}"/></input>' +
  11. '<div ng-show="hidden&&myData.length>0" class="col-md-12">' +
  12. ' <select class="drowpdawn-select" ng-change="change(x)" ng-model="x" multiple>' +
  13. ' <option ng-repeat="item in myData" class="drowpdawn-option" value={{item}}> {{item.account}}&nbsp&nbsp{{item.name}}&nbsp&nbsp{{item.gender}}&nbsp&nbsp{{item.areaDTO.area}}&nbsp&nbsp{{item.placeDTO.place}}</option>' +
  14. ' </select>' +
  15. '</div>',
  16. // replace: true,
  17. link: function($scope, elem, attr, ctrl) {
  18. // $scope.requesdata = ["key4", "xyz", "key3", "xxxx", "key2", "value2", "key1", "value1"];
  19. console.log($scope.myData);
  20. $scope.tempdatas = $scope.requesdata; //下拉框选项副本
  21. $scope.hidden = false; //选择框是否隐藏
  22. $scope.searchField = ''; //文本框数据
  23. //将下拉选的数据值赋值给文本框
  24. $scope.change = function(x) {
  25. // $scope.searchField = JSON.parse(x[0]).account;
  26. // $scope.requester = JSON.parse(x[0]);
  27. $scope.getMydata(x);
  28. $scope.hidden = false;
  29. }
  30. //获取的数据值与下拉选逐个比较,如果包含则放在临时变量副本,并用临时变量副本替换下拉选原先的数值,如果数据为空或找不到,就用初始下拉选项副本替换
  31. $scope.changeKeyValue = function(v) {
  32. $scope.refreshUseradd(v);
  33. var newDate = []; //临时下拉选副本
  34. //如果包含就添加
  35. angular.forEach($scope.requesdata, function(data, index, array) {
  36. if (data.indexOf(v) >= 0) {
  37. newDate.unshift(data);
  38. }
  39. });
  40. //用下拉选副本替换原来的数据
  41. $scope.requesdata = newDate;
  42. //下拉选展示
  43. $scope.hidden = true;
  44. //如果不包含或者输入的是空字符串则用初始变量副本做替换
  45. if ($scope.requesdata.length == 0 || '' == v) {
  46. $scope.requesdata = $scope.tempdatas;
  47. }
  48. console.log($scope.requesdata);
  49. }
  50. },
  51. controller: [
  52. '$scope', '$document',
  53. function($scope, $document) {
  54. // $scope.changeKeyValue = function(v) {
  55. // $scope.onChangeadd(v);
  56. // var newDate = []; //临时下拉选副本
  57. // //如果包含就添加
  58. // angular.forEach($scope.requesdata, function(data, index, array) {
  59. // if (data.indexOf(v) >= 0) {
  60. // newDate.unshift(data);
  61. // }
  62. // });
  63. // //用下拉选副本替换原来的数据
  64. // $scope.requesdata = newDate;
  65. // //下拉选展示
  66. // $scope.hidden = false;
  67. // //如果不包含或者输入的是空字符串则用初始变量副本做替换
  68. // if ($scope.requesdata.length == 0 || '' == v) {
  69. // $scope.requesdata = $scope.tempdatas;
  70. // }
  71. // console.log($scope.requesdata);
  72. // }
  73. $scope.checkclick = function($event) {
  74. if ($scope.hidden) {
  75. $scope.hidden = ture;
  76. } else {
  77. $scope.hidden = true;
  78. }
  79. $event.stopPropagation();
  80. }
  81. $document.bind("click", function(event) {
  82. $scope.hidden = false;
  83. $scope.$apply();
  84. });
  85. }
  86. ],
  87. }
  88. // };
  89. });