如何在AngularJS嵌套控制器中改变顶层作用域变量
How to change top-level scope variables in AngularJS nested controllers?
在一个页面上,我有以下结构:
- layoutController(在js控制器中:$scope)currentProject = ")
- {{currentProject。名称}}
- projectListController -(在js控制器中,我填充$scope的值。当前项目与对象)
问题是,一旦我设置了新的值,{{currentProject。Name}}为空
缺失的是什么?
使用$parent.value
访问父控制器作用域。
http://plnkr.co/edit/vj0kUoiXEqH9w5OPNhsu?p=preview
您应该尝试将该值默认为如下所示的空白对象
$scope.currentProject = ""
$scope.currentProject = {}
当你在父级$作用域中定义一个属性时,它将通过原型链被继承,如果你在子级$作用域中重新定义该属性,你将失去该引用。
所以继续的方法是在projectListController中,而不是将对象分配给currentProject,你应该复制属性到它。$parent.currentProject.
这是因为子控制器创建了父作用域的副本。
在你的嵌套控制器中,你应该注入$rootScope而不是$scope相关文章:
- 当根作用域属性改变时刷新指令
- AngularJS:如何在一个控制器中用触发器改变另一个控制器的作用域
- ES6的箭头函数在Meteor.publish中改变了它的作用域
- AngularJS指令——在作用域参数改变时重新运行link函数
- JavaScript作用域改变了吗?为什么会这样呢?
- 改变ng-repeat from指令内部的作用域
- 改变“this"主干集合的作用域
- 全局变量在按下按钮时没有改变(作用域问题)
- 改变一个作用域项
- Angularjs -作用域的改变没有反映出来
- Angular在作用域变量改变后更新指令
- AngularJS:不能通过指令改变父作用域
- 当值在AngularJS之外改变时,AngularJS指令的作用域不会更新
- 如何在作用域改变时重新绘制/重建指令中的模板
- 在ngDialog中提交表单后,Angular视图不会在作用域改变时更新
- Angular.js在变量改变后更新作用域
- 如何在作用域变量改变时继续调用函数
- 使用ng-select改变作用域
- AngularJs -当作用域值改变时检查条件(if - else)
- Javascript -如何在没有'this'的情况下改变作用域和访问方法?