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

Angularjs 如何从子范围内更新父范围中的模型?,angularjs,Angularjs,我是新来的,学习能力很强。当我从这个url看到代码时,事情就不清楚了 请参阅代码并告诉我为什么不能从子范围更新模型数据 <input type="text" ng-model="data"> <div ng-if="true"> <input type="text" ng-model="data"> </div> <input type="text" ng-model="data.input"> <

我是新来的,学习能力很强。当我从这个url看到代码时,事情就不清楚了

请参阅代码并告诉我为什么不能从子范围更新模型数据

<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>
再次查看下面的代码,并告诉我父作用域中的哪个模型正在从子作用域中更新有什么特殊的东西

<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>
它们只使用数据。输入和父数据从子范围更新…这不清楚。输入关键字有什么特别之处

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

还要告诉我何时创建子作用域?当我们使用ng if或ng show then时


感谢您在发布的第一个示例中,在ng if中创建了一个新的作用域,并将输入绑定到名为data的子作用域变量。外部输入有自己的作用域和数据变量

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

如果我们试图从子作用域访问父作用域上定义的属性,JavaScript将首先查找子作用域,而不是查找属性,然后查找继承的作用域并查找属性


下面的快速回答是:

看看这个-希望它能解决您的疑问,您应该阅读并采用组件体系结构,以及它的输入输出边界。它会立即提高你的角度敏锐度,使范围混淆成为过去。我只是想知道新的范围是什么时候创建的?告诉我一些在angularjs中创建新范围的场景。