嵌套控制器,父访问和" controllerAs"句法

时间:2015-08-20 19:02:55

标签: javascript angularjs

我在使用controllerAs语法时遇到了一些问题(我尝试遵循johnpapa的样式指南:https://github.com/johnpapa/angular-styleguide#style-y032)和嵌套控制器。

让我们先看看"常规" $scope语法:http://plnkr.co/edit/S8jgE6hlQiYGsQYryxA2?p=preview
有2个控制器:parentControllerchildController。在parentController中,有一个对象obj绑定到$scopechildController访问此对象,并设置属性name(我需要将一些内容从子级写入父级)。

现在,我尝试使用controllerAs语法执行此操作:http://plnkr.co/edit/by9EAThEky7q0lKepv2r?p=preview
但我收到一个错误:TypeError: Cannot set property 'name' of undefinedchildController没有看到obj。为什么?有什么办法可以解决吗?

1 个答案:

答案 0 :(得分:0)

childController中,您正在执行此操作:

var vm = this;
vm.obj.name = "child";

但是,在尝试设置name属性之前,您永远不会设置obj的值。

尝试:

var vm = this;
vm.obj = {};
vm.obj.name = "child";

如果您想将儿童的价值发送到父作用域,您可以使用$emit对事件执行此操作。看到这个插件:

http://plnkr.co/edit/huvcFN4JoTu3cBPSSPdQ?p=preview