这与堆栈上的其他问题略有不同,因为我需要使用仅存在于我的指令中的参数来调用 Controller 的函数。
指令(标记):
<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>
Controller 内部的功能:
$scope.doSomething = function(myVar) { //myVar is null };
所以问题是,在指令 param.abs 中解析得很好,但是在被调用的作用域函数中,参数为空!我究竟做错了什么?如何获取参数才能通过?
最佳答案
您需要确定将在标记中指定的函数参数的标准名称(在您的示例中,您使用了 x
)。然后,您可以在指令的隔离作用域中创建一个函数,该函数将调用 doSomething()
方法如下:
指令链接功能:
$scope.runCallback = function (param) {
$scope.doSomething({x: param});
}
然后只需将指令内的标记更改为:
<span ng-click="runCallback('im not resolving')"></span>
现在您的标记调用 ( <div do-something="doSomething(x)"></div>
) 和 Controller 内的函数将正常工作。
关于javascript - 如何从带参数的指令调用 Angular Controller 作用域函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22975891/