app.directive('selectInput', function($compile) { return { restrict: 'AE', //attribute or element // scope: { // requesdata: '=', // onChangeadd: '&' // //bindAttr: '=' // }, template: '' + '
' + ' ' + '
', // replace: true, link: function($scope, elem, attr, ctrl) { // $scope.requesdata = ["key4", "xyz", "key3", "xxxx", "key2", "value2", "key1", "value1"]; // console.log($scope.myData); $scope.tempdatas = $scope.requesdata; //下拉框选项副本 $scope.hidden = false; //选择框是否隐藏 $scope.searchField = ''; //文本框数据 $scope.showkeys = ""; if (attr.showkeys) { $scope.showkeys = attr.showkeys; } // $scope.$watch("attr.model", function(newValue, oldValue) { // $scope.searchField = attr.model; // }) if (attr.model) { // $scope.$watch("attr.model", function(newValue, oldValue) { // $scope.searchField = attr.model; // }) // $timeout(function() { $scope.searchField = attr.model; // }, 1000); } //将下拉选的数据值赋值给文本框 $scope.change = function(x) { // $scope.searchField = JSON.parse(x[0]).account; // $scope.requester = JSON.parse(x[0]); $scope.getMydata(x); if ($scope.searchField == "" && $scope.getMydata(x)) { $scope.searchField = $scope.getMydata(x); } $scope.hidden = false; } //获取的数据值与下拉选逐个比较,如果包含则放在临时变量副本,并用临时变量副本替换下拉选原先的数值,如果数据为空或找不到,就用初始下拉选项副本替换 $scope.changeKeyValue = function(v) { $scope.getMydataone(v); $scope.refreshUseradd(v); var newDate = []; //临时下拉选副本 //如果包含就添加 angular.forEach($scope.requesdata, function(data, index, array) { if (data.indexOf(v) >= 0) { newDate.unshift(data); } }); //用下拉选副本替换原来的数据 $scope.requesdata = newDate; //下拉选展示 $scope.hidden = true; //如果不包含或者输入的是空字符串则用初始变量副本做替换 if ($scope.requesdata.length == 0 || '' == v) { $scope.requesdata = $scope.tempdatas; } console.log($scope.requesdata); } }, controller: [ '$scope', '$document', function($scope, $document) { // $scope.changeKeyValue = function(v) { // $scope.onChangeadd(v); // var newDate = []; //临时下拉选副本 // //如果包含就添加 // angular.forEach($scope.requesdata, function(data, index, array) { // if (data.indexOf(v) >= 0) { // newDate.unshift(data); // } // }); // //用下拉选副本替换原来的数据 // $scope.requesdata = newDate; // //下拉选展示 // $scope.hidden = false; // //如果不包含或者输入的是空字符串则用初始变量副本做替换 // if ($scope.requesdata.length == 0 || '' == v) { // $scope.requesdata = $scope.tempdatas; // } // console.log($scope.requesdata); // } $scope.checkclick = function($event) { if ($scope.hidden) { $scope.hidden = true; } else { $scope.hidden = true; } $event.stopPropagation(); } $document.bind("click", function(event) { $scope.hidden = false; $scope.$apply(); }); } ], } // }; });