我使用的是无作用域指令(https://github.com/johnpapa/angularjs-styleguide#directives-和控制器)。
<directive1>
<directive2></directive2>
</directive2>
在外directive1
中,我得到了controllerAS: 'vm'
和var vm=this; vm.test="test from directive1"
内部directive2
具有scope: false, controllerAs: 'vm2', bindToController:true
如何从directive2
获取directive1
vm.test
数据?我想在控制器中使用它,而不是HTML视图
您试图用做什么
var vm = this
是指令1的JS范围的局部变量(而不是angular的$scope对象)。Directive2永远无法访问它。要提供访问权限,您必须将vm附加到指令1的作用域。然后,嵌套指令two的$scope将可以访问它。
像指令一中的这样
$scope.vm = this; // This will work
$scope.vm.test = 'test from directive1 scope';
就像指令2中的
controller: function ($scope) {
console.log($scope.vm.test) // this will work for you
下面是一个正在工作的jsFiddle示例。
工作jsFiddle示例