无作用域指令-如何获取数据



我使用的是无作用域指令(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示例

最新更新