如何从子范围内更新父范围中的模型



我是Angular 和学习方面的新手。 当我看到来自此 URL 的代码时 https://stackoverflow.com/a/19177773/6188148 事情就不清楚了。

查看代码并告诉我为什么无法从子范围更新模型数据?

<input type="text" ng-model="data">
<div ng-if="true">
    <input type="text" ng-model="data">
</div>     

再次查看下面的代码,并告诉我父作用域中的哪个模型从子作用域内部更新有什么特殊之处?

   <input type="text" ng-model="data.input">
    <div ng-if="true">
        <input type="text" ng-model="data.input">
    </div>

它们只使用data.input父数据是从子范围更新的。这并不清楚。.input 关键字有什么特别之处?

请帮助我了解第二个示例如何仅通过.input关键字更新父数据?

还告诉我何时创建子作用域? 当我们使用 ng-if 或 ng-show 时,那么?

谢谢

在您发布的第一个示例中,在 ng-if 中,创建了一个新范围,并且输入绑定到名为 data 的子范围变量。 外部输入有自己的范围和自己的数据变量。

以下链接更详细地解释了正在发生的事情。 但简而言之,这种行为是因为 angularJs 在使用 ng-if 指令时会创建一个新的子作用域。 角度示波器使用原型继承。为了通过这种情况,我们可以利用Javascript对象是通过引用传递的事实。

"如果我们尝试从子范围访问在 parentScope 上定义的属性,JavaScript 将首先查找子范围,而不是找到属性,然后在继承的作用域中查找,并找到属性。

快速回答来自: https://github.com/angular/angular.js/wiki/Understanding-Scopes#javascript-prototypal-inheritance

最新更新