小提琴这里需要帮助:http://jsfiddle.net/graphicsxp/QA4Fa/2/angularjs - 滞search指令
我triying创建一个指令进行搜索。基本上它只是一个检测用户输入的文本框,并且在1秒的延迟之后,调用搜索方法。
它还没有工作,我有两个问题。
首先,为什么在用户输入文本时跨度中的filterCriteria未更新?其次,filterCriteria上的监视在页面加载时触发,但不是在文本框中输入文本时触发。
<div ng-app="myApp" ng-controller="myController">
<delayed-search ng-model="filterCriteria"></delayed-search>
<span>filter criteria is : {{filterCriteria}}</span>
</div>
angular.module('myApp', []).directive("delayedSearch", ['$timeout', function($timeout) {
return {
restrict: "E",
template: '<input type="text" />',
scope: {
filterCriteria : '='
},
link: function (scope, element, attrs) {
},
controller: function ($scope) {
var timer = false;
$scope.$watch('filterCriteria', function() {
if (timer) {
$timeout.cancel(timer);
}
timer = $timeout(function() {
alert('timeout expired');
}, 1000)
});
}
}
}]).controller('myController', function($scope){ });
作为一种替代方法,来看看这个答案,它提供了一个指令,可以让你穿上ngChange延迟:http://stackoverflow.com/questions/21121460/angular-directive-包封-A-延迟换NG-变化/ 21420441#21420441。使用ngChange以1的ngDelay调用搜索方法。 – Doug 2014-01-29 03:46:07