我有一个标签,显示我的代码中过滤项目的数量,如下所示
<div ng-controller="MyCtrl">
Filter: <input ng-model='filterExpr'><button ng-click='items.push("car")'>Add sth to the list</button>
<button ng-click='items.splice(items.length-1,1)'>minus sth from the list</button>
<hr>
<ul>
<li ng-repeat='item in filtered = (items | filter:filterExpr)'>{{item}}</li>
</ul>
<hr>
Filtered list has {{filtered.length}} items
喜欢这里的示例JSFiddle
但是当我将 ng-repeat 部分放入 ng-switch View 之一后,它似乎是动态变量已过滤来自 ng-repeat 在 ng-switch 之外不再可见。
<div ng-switch on="viewType.value">
<div ng-switch-default>
<ul>
<li ng-repeat='item in filtered = (items | filter:filterExpr)'>{{item}}</li>
</ul>
</div>
</div>
像这里 JSFiddle
最佳答案
我认为发生这种情况是因为 ng-switch
创建了自己的作用域。您可以通过在开关内使用 $parent
来解决这个问题。
<ul>
<li ng-repeat='item in $parent.filtered = (items | filter:filterExpr)'>{{item}}</li>
</ul>
关于javascript - 来自 ng-repeat 的新动态变量在 ng-switch 外部不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37543597/