我想创建一个链接到属性的指令。该属性指定应在作用域上调用的函数。但我也想传递一个参数到在链接函数内确定的函数。
<div my-method='theMethodToBeCalled'></div>
在链接函数中,我绑定到一个jQuery事件,它传递一个参数,我需要传递给函数:
app.directive("myMethod",function($parse) { restrict:'A',link:function(scope,element,attrs) { var expressionHandler = $parse(attrs.myMethod); $(element).on('theEvent',function( e,rowid ) { id = // some function called to determine id based on rowid scope.$apply(function() {expressionHandler(id);}); } } } app.controller("myController",function($scope) { $scope.theMethodToBeCalled = function(id) { alert(id); }; }
Marko的
solution works well。
原文链接:https://www.f2er.com/angularjs/147054.html与推荐的Angular方法(如treeface的plunkr所示)不同的是使用一个不需要定义expressionHandler的回调表达式。在marko的示例更改:
在模板中
<div my-method="theMethodToBeCalled(myParam)"></div>
$(element).click(function( e,rowid ) { scope.method({myParam: id}); });
这与Marko的解决方案相比有一个缺点 – 在第一次加载时,TheMethodToBeCalled函数将被调用myParam === undefined。
工作示范可在@treeface Plunker找到