4

下面是两段代码:

<input type="text" ng-model="data.message">
<div>Hello, {{data.message}}</div>

<div ng-controller="firstCtrl">
    <input type="text" ng-model="data.message">
    <div>Hello, {{data.message}}</div>
</div>

<div ng-controller="secondCtrl">
    <input type="text" ng-model="data.message">
    <div>Hello, {{data.message}}</div>
</div>

<input type="text" ng-model="msg">
<div>Hello, {{msg}}</div>

<div ng-controller="firstCtrl">
    <input type="text" ng-model="msg">
    <div>Hello, {{msg}}</div>
</div>

<div ng-controller="secondCtrl">
    <input type="text" ng-model="msg">
    <div>Hello, {{msg}}</div>
</div>

ng-controller这里创建了新的范围,因此firstCtrlsecondCtrl范围原型在这两种情况下都从根范围继承。因此,理想情况下,当子项的属性被覆盖时,是shadows从父项继承的值,并且父项中的值保持不变。那么为什么这两个片段的工作方式不同呢?

另外,为什么在第一个片段中,更改值 infirstCtrl也会更改根范围内的值?

Plnkr:http ://plnkr.co/edit/x4LH4JAOMr9I8bCcSO8Y?p=preview

4

1 回答 1

1

用于同步控制器,因此dot更新一个模型中的属性将导致其他控制器中的属性也被更新。

在您的第二个片段中,您将覆盖范围。

请看这个视频,它很好地解释了它。

于 2013-06-03T07:58:12.243 回答