【发布时间】:2014-04-10 17:09:34
【问题描述】:
我有一个控制器函数,我将它传递给一个通用指令 (#1)。在通用指令模板中,我有另一个特定指令(#2),我将相同的控制器函数传递给它。
问题似乎是通用指令 (#1) 在接收到控制器方法时对其进行了评估,因此没有将其正确传递给通用指令模板中的特定指令 (#2)。
JSFIDDLE:http://jsfiddle.net/Hgh7D/
var myApp = angular.module('myApp',[])
.controller('myctrl', ['$scope', function($scope) {
$scope.ctrlfunc = function(myvar) {
console.log(myvar);
}
}])
.directive('mydir1', function() {
return {
template: '<div mydir2 dirfunc="dirfunc"></div>',
scope: {
dirfunc: '&'
}
}
})
.directive('mydir2', function() {
return {
template: '<button ng-click="onClick()">click</button>',
scope: {
dirfunc: '&'
},
link: function(scope) {
scope.onClick = function() {
scope.dirfunc({myvar:'hello'});
}
}
}
})
如果我将函数的特定指令的范围声明更改为“=”而不是“&”,则它可以正常工作。
JSFIDDLE:http://jsfiddle.net/Hgh7D/1/
.directive('mydir2', function() {
return {
template: '<button ng-click="onClick()">click</button>',
scope: {
dirfunc: '='
},
link: function(scope) {
scope.onClick = function() {
scope.dirfunc({myvar:'hello'});
}
}
}
})
但是我不想这样做,因为它可能并不总是用于这种 2 层指令的情况。我希望它保持“&”,因为它需要一个功能。这可能吗?
【问题讨论】:
标签: angularjs