在我的应用程序中,我有简单的angular.js过滤器,它工作正常,但现在我需要集成服务器端搜索。我已经端点这一点,我创建指令该款腕表在输入查询,使请求服务器返回结果: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>
所以代表服务器端的搜索查询的结果后,清除输入字段,当我需要以某种方式返回被搜索之前表示,目前无法找到这个最佳的解决方案的所有项目..
也许有人做过类似的事情吗?
如何检查scope.value是至少2个字符而不是空的?您仍然可以将其保存到当前范围(即scope.searchResults = rest.que ....)。视图应该在其余查询完成后更新。 – leon