这与堆栈上的其他问题略有不同,我需要使用仅存在于我的指令中的参数来调用我的控制器函数。
指令(标记):
<div do-something="doSomething(x)"></div>
指令(js):
var directive = function () {
return {
restrict: 'EA',
templateUrl: '/angular/node-for-detail.html',
scope: {
doSomething: '&'
}
}
};
指令内的标记:
<span ng-click="doSomething('im not resolving')"></span>
控制器内的功能:
$scope.doSomething = function(myVar) { //myVar is null };
所以问题是,在指令param.abs里面解决得很好,但是在调用范围函数里面,参数是null!我究竟做错了什么?如何让参数通过?
答案 0 :(得分:0)
您需要为将在标记中指定的函数决定参数的标准名称(在您的示例中,您使用了x
)。然后你可以在指令的隔离范围中创建一个函数,它将调用doSomething()
方法,如下所示:
指令链接功能:
$scope.runCallback = function (param) {
$scope.doSomething({x: param});
}
然后只需将指令内的标记更改为:
<span ng-click="runCallback('im not resolving')"></span>
现在您的标记调用(<div do-something="doSomething(x)"></div>
)和控制器内部的功能将正常工作。
答案 1 :(得分:0)
尝试在指令中替换你的标记,如下所示:
<span ng-click="doSomething()('im not resolving')"></span>
指令标记:
<div do-something="doSomething"></div>