来自 ng-repeat 的新即时变量在 ng-switch 之外不可见

A new on-the-fly variable from ng-repeat is not visible outside the ng-switch

我有一个标签显示我的代码中过滤项目的数量,如下所示

<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 视图之一之后,它似乎是即时变量来自 ng-repeat 的 filteredng-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>