我有一个调用指令两次的页面
<div>
<my-directive attr="attr1" attrSib="attr2"></my-directive>
<my-directive attr="attr2" attrSib="attr1"></my-directive>
</div>
我希望彼此交流,所以我尝试使用父范围来设置一个函数,作为我的指令的例子
.directive('myDirective', function(_) {
return {
restrict: 'E',
templateUrl: 'template.html',
controller: 'directiveController',
controllerAs: 'ctrl',
scope: {
attr: '=',
attrSib: '='
},
};
directiveController就像
var siblingName = vm.selfName + attrSib;
$scope.parent[selfName + attr] = function(){...};
....
/*on event*/$scope.parent[sibling]();
但是我注意到第一个指令的父作用域有id x,而第二个指令有一个作为id x + 1的作用域父作用,它是x的子...
我怎样才能让两个人拥有同一个父母?我不想使用rootScope广播。
答案 0 :(得分:0)
如果您在评论中添加新属性,则会将所有指令彼此分开,此处我添加parent
,因此您可以使用attr
或{{1}来呼叫父级很容易,来自父母一方。
sibling
例如
<div>
<my-directive parent="iParent" attr="attr1" sibling="attr2"></my-directive>
<my-directive parent="iParent" attr="attr2" sibling="attr1"></my-directive>
</div>
$scope[parent][sibling]();
&#13;
var app = angular.module("app", []);
app.controller("ctrl", function($scope){
$scope.parent = [
{name: "A"},
{name: "B"}
]
$scope.parent2 = [
{name: "C"},
{name: "D"}
]
})
app.directive("myDirective", function(){
return {
template: "<p>you call {{node.name}}</p>",
scope: {
index: "=",
parent: "="
},
link: function(scope){
scope.node = scope.parent[scope.index];
}
}
})
&#13;