如何从带有参数的指令中调用角度控制器范围函数
How to call angular controller scope function from directive with parameters?
这与堆栈上的其他问题略有不同,因为我需要使用仅存在于指令中的参数来调用控制器的函数。
指令(标记):
<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中解析得很好,但在调用的scope函数中,参数为null!我做错了什么?如何获取参数以使其通过?
您需要为将在标记中指定的函数的参数确定一个标准名称(在您的示例中,您使用了x
)。然后,您可以在指令的隔离作用域中创建一个函数,该函数将调用doSomething()
方法,如下所示:
指令链接功能:
$scope.runCallback = function (param) {
$scope.doSomething({x: param});
}
然后只需将指令中的标记更改为:
<span ng-click="runCallback('im not resolving')"></span>
现在,您的标记调用(<div do-something="doSomething(x)"></div>
)和控制器内的函数将正常工作。
尝试在指令中替换标记,如下所示:
<span ng-click="doSomething()('im not resolving')"></span>
和指令标记:
<div do-something="doSomething"></div>
相关文章:
- 如何在单击复选框后调用控制器方法
- 未调用控制器
- 在Angular中呈现DOM对象时,如何调用控制器中指定的函数
- 调用控制器后Ajax抛出错误
- 如何在使用$timeout进行指令渲染后调用控制器方法
- AngularJs 从指令中的另一个调用控制器
- 有没有办法从 javascript 函数调用控制器操作
- Angularjs:路由后如何调用控制器函数
- MVC 下拉列表更改事件未正确调用控制器中的操作
- Angularjs指令调用控制器函数
- ng重复调用控制器功能的次数太多
- 如何在angular js中从指令调用控制器函数
- 使用ng-include调用控制器时AngularJS路由解析
- Angularjs将函数从控制器传递到指令(或从指令调用控制器函数)-带参数
- 通过javascript调用控制器方法
- 一键点击首先调用javascript,执行验证,然后调用控制器方法
- 如何使用ajax从javascript调用控制器函数
- 角度ng重复支持从0到n重复,而不调用控制器
- 在视图中未使用Javascript调用控制器操作
- 从AngularJS中的视图调用控制器函数