我在控制器中编写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;所以请建议我如何做到这一点。
由于
答案 0 :(得分:0)
为什么不使用link
代替compile
? Docs Link
link
的定义如下:
功能链接(范围,iElement,iAttrs,controller,transcludeFn){...}
其中scope
将成为控制器的范围。