如何使用angularjs将变量从控制器传递到指令

时间:2014-07-30 08:00:09

标签: angularjs angularjs-directive

我在控制器中编写click事件,即在控制器中获取变量,但我想将这些变量传递给指令我正在编写以下示例代码。 sample.html:

<div ng-controller="myController"
      data-angular-treeview="true"
      data-tree-model="roleList"
      data-node-id="roleId"
      data-tree-id="mytree"
      data-node-label="roleName"
      data-node-children="children" 
      data-ng-click="selectNode(currentNode)"

      >
    </div>

samplecontroller.js:

app.controller('myController', function($scope){
     $scope.selectNode=function(val)
        {
            $scope.nodeval=val.roleName;
            $scope.nodeid=val.roleId;
            $scope.treedata={roleName:val.roleName,roleId:val.roleName};
            $scope.nodedata=JSON.stringify($scope.treedata);

        };
     });

Sampledirective.js:

app.directive('tree1', function($rootScope) {
    function compile(scope, element, attributes) {
        return {
             pre:function(scope, iElement, iAttrs) {

                },
                post:function(scope, iElement, iAttrs) {

             scope.data=scope.nodedata;
                   alert(scope.data);

                    });
                }

        };
    }

    return {
        compile: compile,
        scope: {
            nodedata:'=',
         },
           restrict: 'AE', 
           templateUrl: '/sample.html'
    };
});

在samplecontroller.js中,nodedata获取了roleName和roleId,但我希望将此nodedata从samplecontroller.js传递给Sampledirective.js.inside编译函数&#39; post&#39;警报中的方法我希望得到这个节点数据&#39;所以请建议我如何做到这一点。

由于

1 个答案:

答案 0 :(得分:0)

为什么不使用link代替compileDocs Link

link的定义如下:

  

功能链接(范围,iElement,iAttrs,controller,transcludeFn){...}

其中scope将成为控制器的范围。