angularjs-directive – 在属性中指定的angularjs指令调用函数,并将参数传递给它

前端之家收集整理的这篇文章主要介绍了angularjs-directive – 在属性中指定的angularjs指令调用函数,并将参数传递给它前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想创建一个链接属性的指令。该属性指定应在作用域上调用函数。但我也想传递一个参数到在链接函数内确定的函数
<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); };
}

没有传递id,我可以得到它的工作,但是一旦我尝试传递一个参数,该函数不再被调用

Marko的 solution works well

与推荐的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找到

原文链接:https://www.f2er.com/angularjs/147054.html

猜你在找的Angularjs相关文章