我在使用controllerAs
语法时遇到了一些问题(我尝试遵循johnpapa的样式指南:https://github.com/johnpapa/angular-styleguide#style-y032)和嵌套控制器。
让我们先看看"常规" $scope
语法:http://plnkr.co/edit/S8jgE6hlQiYGsQYryxA2?p=preview
有2个控制器:parentController
和childController
。在parentController
中,有一个对象obj
绑定到$scope
。 childController
访问此对象,并设置属性name
(我需要将一些内容从子级写入父级)。
现在,我尝试使用controllerAs
语法执行此操作:http://plnkr.co/edit/by9EAThEky7q0lKepv2r?p=preview
但我收到一个错误:TypeError: Cannot set property 'name' of undefined
。
childController
没有看到obj
。为什么?有什么办法可以解决吗?
答案 0 :(得分:0)
在childController
中,您正在执行此操作:
var vm = this;
vm.obj.name = "child";
但是,在尝试设置name属性之前,您永远不会设置obj
的值。
尝试:
var vm = this;
vm.obj = {};
vm.obj.name = "child";
如果您想将儿童的价值发送到父作用域,您可以使用$emit
对事件执行此操作。看到这个插件: