在我的应用程序中,我有简单的 angular.js 过滤器,它运行良好,但现在我需要集成服务器端搜索。我有这个端点,我创建了指令,它在输入中监视查询并向服务器返回结果发出请求:
html:
<search ng-model="query"></search>
js:
...
restrict: 'E',
scope: {
ngModel: '='
},
template: '<input type="text" ng-model="ngModel" />',
link: function (scope, elem, attrs) {
var timer = false;
scope.$watch('ngModel', function (value) {
if (timer) {
$timeout.cancel(timer);
}
timer = $timeout(function () {
if (value) {
scope.$parent.items = rest.query({ resource: 'search', query: value });
}
}, 1000);
});
}
...
但是,问题在范围内。如您所见,我正在将结果写入父范围项,因为我需要搜索结果与相同的控制器保持在同一页面上(就像在客户端过滤器中一样):
几个控制器和搜索结果的通用模板:
<ul class="items">
<li class="item item{{$index+1}}" ng-repeat="item in items">
...
</li>
</ul>
因此,在表示服务器端搜索查询的结果之后,在清除输入字段时,我需要以某种方式返回在搜索之前表示的所有项目,并且目前无法为此找到最佳解决方案..
也许以前有人做过类似的东西?