ng模型的角度范围来过滤不同范围的模型

时间:2016-01-23 10:49:50

标签: angularjs

在模板下阅读docs tutorial。以下代码取自app / index.html

棱角是否允许兄弟范围的交叉可见性?

如果范围1中的命名查询数据是否可用于范围2中的过滤器,该范围是兄弟而不是父范围?感谢。



Tools|Options




1 个答案:

答案 0 :(得分:1)

从$ rootScope开始有一个$ scope树。在您的HTML中,只有一个范围在起作用(忽略ngRepeat,每次迭代都会创建自己的子范围)。因此,当用户在输入框中输入值时,它将被绑定到查询,该查询位于与兄弟div相同的范围内。因此,为什么两个查询都绑定到同一个范围变量,即使它们在兄弟div中。

打破绑定的一种方法是为输入控件引入子范围。例如,ngController将创建一个继承父作用域的子作用域。只要按下某个键,它就会在子范围内创建query的副本。这打破了双向绑定,因为现在查询变量的两个副本存在于不同的范围内。

<div class="col-md-2" ng-controller="anyCtrl"> //-----------scope 1 -----------------
  <!--Sidebar content-->

  Search: <input ng-model="query">

</div>

您应该可视化您的$ scope树并了解哪些指令将创建子范围。还要记住,$ scope变量查找(读取)是通过原型$ scope继承来解析的(意味着$ scope变量的定义可能存在于$ scope树的更高位置)。但$ scope变量写入将写入其直接范围 - 有时会破坏明显的绑定,如上所述。