javascript - 来自 ng-repeat 的新动态变量在 ng-switch 外部不可见

标签 javascript angularjs angularjs-ng-repeat 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 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/

相关文章:

javascript - Magento 2 覆盖管理 js 文件

angularjs - Angular Material - 关闭菜单时如何关闭/隐藏我的 md-select?

angularjs - 在 angularjs 中如何装饰 $stateProvider Provider?

javascript - 通过 AJAX 和 jQuery 从 PHP 数组中获取数据

javascript - 在 Jquery 或 Javascript 中更改第 n 个类的 CSS

javascript - 如何在验证时从选择字段中删除类错误

angularjs - 在 angular-ui bootstrap 警报中包含链接?

javascript - AngularJS新推()'ed item to ngRepeat $Scope doesn' t有效编辑或删除

javascript - 在另一个内部的 ng-repeat 中更新模型

javascript - AngularJS ng-repeat 模型值预先分配