因此,我可以从子控制器更改模型值,但是当子控制器处于ng-switch
然后就不行了,为什么呢?我创建一个例子 http://plnkr.co/edit/R7D8Xa1HBmYnwffbHQGD?p=preview来展示它。
避免这种情况的一种方法是使用.
在型号名称中,例如bunnies.kills
。这是一个错误还是一个功能?
使用角度 1.0.6
使用您的代码结构,在您的子控制器中您需要更改:
$scope.$parent.kills++;
to
$scope.$parent.$parent.kills++;
解释: MainCtrl
的范围是父范围SimpleParentCtrl
,但祖父母Step1Ctrl
and Step2Ctrl
。正如其他一些人指出的那样,ng-switch
创建自己的范围,然后你的Step1Ctrl
and Step2Ctrl
每个都创建了一个子范围ng-switch
.
Note:每次单击 1 或 2 按钮时,ng-switch
并且当前匹配的子控制器获得了新的范围。
Also:如果您碰巧正在查看 Angular 源代码并想知道如何ng-switch
指令创建自己的范围,无需scope
属性,答案是它通过其链接方法手动执行此操作scope.$new()
。指令ng-include
, ng-switch
, ng-repeat
, and ng-view
所有这些都以这种方式创建新作用域,无论是在链接方法中还是在编译方法返回的链接函数中。
资源:
https://github.com/angular/angular.js/wiki/The-Nuances-of-Scope-Prototypal-Inheritance https://github.com/angular/angular.js/wiki/The-Nuances-of-Scope-Prototypal-Inheritance
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)