我是角色和学习的新手。当我看到此网址https://stackoverflow.com/a/19177773/6188148中的代码时,事情就不清楚了。
查看代码并告诉我为什么无法从子范围更新模型数据?
cal.get(Calendar.HOUR_OF_DAY)
cal.get(Calendar.MINUTE)
再次查看下面的代码并告诉我父范围内的哪个模型从子范围内更新有什么特殊之处?
<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 关键字有什么特别之处?
请帮助我了解第二个示例如何仅通过 .input 关键字更新父数据?
还告诉我什么时候创建子范围?当我们使用ng-if或ng-show时呢?
感谢
答案 0 :(得分:1)
在您发布的第一个示例中,在ng-if中创建了一个新范围,并且输入绑定到名为data的子范围变量。外部输入有自己的范围和自己的数据变量。
以下链接更详细地介绍了最新进展。但简而言之,这种行为是因为当使用ng-if指令时,angularJs会创建一个新的子范围。角度范围使用原型继承。为了通过这种情况,我们可以利用Javascript对象通过引用传递的事实。
“如果我们尝试从子范围访问parentScope上定义的属性,JavaScript将首先查看子范围,找不到属性,然后查看继承的范围,并找到属性。”
快速回答:https://github.com/angular/angular.js/wiki/Understanding-Scopes#javascript-prototypal-inheritance