『AngularJS』理解$Scope

理解$Scope

执行概要

在AngularJS,一个子scope一般原型继承于它的父scope。应用于这个规则的表达式是一个使用scope:{...}的指令,这将建立一个『孤岛』scope(非原型继承)。这种构造一般在建立一个可复用组件指令的时候使用。git

Scope继承一般是垂直的,而且你一般不须要知道它的发生,直到你尝试在子scope中使用2-way数据绑定到一个在父scope中定义的原始类型。scope不起做用的缘由,不少是因为在它的父类中有同名的属性。AngularJS不会这么作,这是由JavaScript原型继承本身作的。新的AngularJS开发者常常不了解的是,ng-repeat、ng-switch、ng-view、ng-include都会建立一个新的子scope,因此问题常常在这些指令中出现。github

在你的model中,带有「.」将会确认原型继承在起做用。因此使用<input type="text" ng-model="someObj.prop1"><input type="text" ng-model="prop1">更好。code

若是你真的想要(或须要)使用一个原始的方式,有两项工做:继承

  • 在子scope中,使用$parent.parentScopeProperty。这将阻止子scope建立它本身的属性。
  • 在父scope上建立一个方法,而且从子scope中调用它,传递原始值到父scope中(并不老是起做用)。

相关细节

相关文章
相关标签/搜索