加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs-directive – 在属性中指定的angularjs指令调用函数,

发布时间:2020-12-17 09:11:45 所属栏目:安全 来源:网络整理
导读:我想创建一个链接到属性的指令。该属性指定应在作用域上调用的函数。但我也想传递一个参数到在链接函数内确定的函数。 div my-method='theMethodToBeCalled'/div 在链接函数中,我绑定到一个jQuery事件,它传递一个参数,我需要传递给函数: app.directive("
我想创建一个链接到属性的指令。该属性指定应在作用域上调用的函数。但我也想传递一个参数到在链接函数内确定的函数。
<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找到

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读