【问题标题】:How can I update the model in parent scope from inside the child scope?如何从子范围内更新父范围内的模型?
【发布时间】:2017-05-19 22:41:39
【问题描述】:

我是角度和学习方面的新手。当我看到来自这个 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 then 时?

谢谢

【问题讨论】:

标签: angularjs


【解决方案1】:

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

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

“如果我们尝试从子作用域访问定义在父作用域上的属性,JavaScript 会先在子作用域中查找,没有找到该属性,然后在继承的作用域中查找,然后找到该属性。”

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

【讨论】:

  • 我只是想知道新范围是什么时候创建的?告诉我在 angularjs 中创建新范围时的几个场景。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 2015-09-16
  • 1970-01-01
  • 2015-12-14
相关资源
最近更新 更多