0

我有一个嵌套在 ng-if 块中的 ng-repeat:

<div ng-repeat="item in filteredItems = (fullItemCollection | filter:searchQuery)>{{item}}</div>

当我尝试从我的控制器访问 $scope.filteredItems 时,我没有看到应有的 filterItems。我假设这与 ng-if 创建的范围有关,但我很确定我之前使用过类似的设置,没有任何问题。

做了一个 jsfiddle 作为演示:http: //jsfiddle.net/gLdeM/

还做了一个 jsfiddle 来表明这种行为在没有 ng-if 的情况下确实有效:http: //jsfiddle.net/LgSAL/1/

注意:我知道 plnkr 风靡一时,但由于某种原因,我们的防火墙阻止了 plnkr 的保存 :(

4

2 回答 2

0

该变量filteredItems仅在ng-repeat. 如果要以与第一个列表相同的方式过滤第二个列表,请使用相同的过滤条件:

<div ng-repeat="item in filteredItems = (fullItems | filter:searchQuery)">
  {{ item }}
</div>

http://jsfiddle.net/gLdeM/1/

于 2014-05-02T20:51:47.870 回答
0

我忘记了 javascript 继承主要用于 javascript 对象。如果我将完整和过滤的数组嵌套在外部对象中,它就可以工作。

$scope.items = {
    filtered: [],
    full: ['red', 'blue', 'green', 'yellow', 'blue-green', 'yellow-green', 'orange']
};

查看更新的 jsfiddle

于 2014-05-02T21:11:33.693 回答