ここでフィドル:http://jsfiddle.net/graphicsxp/QA4Fa/2/
検索用のディレクティブを作成しようとしています。基本的には、ユーザー入力を検出するテキスト ボックスにすぎず、1 秒後に検索メソッドが呼び出されます。
まだ機能しておらず、2 つの問題があります。
まず、ユーザーがテキストを入力したときに、スパンで filterCriteria が更新されないのはなぜですか?
第 2 に、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){ });