【发布时间】:2014-08-08 12:21:26
【问题描述】:
S这是一个 Angularjs ng-repeat 循环,其中 rssSources 是一个 JSON 数组。每个元素代表一个带有 RSS 提要参数的对象,例如标题、网址和标签。
<li ng-repeat="ssrc in rssSources | filter:qsources | filter:qsources2 | filter:isCategory | limitTo:140 | orderBy: 'atitle'"><a ng-click="selectModel(ssrc.aurl)" target="_blank">{{ssrc.atitle}}</a></li>
我可以这样过滤
<input type="text" ng-model="qsources" placeholder="Select Feed">
问题:只要在模板中定义了 rssSources - $scope.rssSources = [{}{}{}] - 使用输入进行过滤就可以工作,而 ng-repeat 中的其他过滤器也可以工作。
但是,一旦我从 Firebase 获得 rssSources,数据仍会显示,但过滤器都不起作用。另外,排序不起作用。
我找到了一种解决方法,至少可以将 ng-repeat 绑定到输入字段 - 它确实很难看,但它有效:
ng-repeat="ssrc in rssSources" ng-show='ssrc.atags.indexOf(qsources) > -1 || qsources == undefined'
寻找干净的 AngularJS-ish 解决方案。这里缺少一些基本的东西来使 Firebase 中的数据源可过滤和可排序。
【问题讨论】:
-
过滤器太多了。其中每一个都涉及迭代所有数据并创建一个新数组。您可能希望将这些组合成一个自定义查询并自己完成这项工作以提高效率。
-
感谢您的调查,我认为这是正确的。我对 AngularJ 和一般的 MVC 思维非常陌生。因此,我倾向于在视图中包含太多逻辑。正在努力!
标签: angularjs filter angularjs-ng-repeat firebase ng-repeat