gpt4 book ai didi

angularjs-directive - angularjs 指令调用属性中指定的函数并向其传递参数

转载 作者:行者123 更新时间:2023-12-03 04:49:34 25 4
gpt4 key购买 nike

我想创建一个链接到属性的指令。该属性指定应在作用域上调用的函数。但我还想将一个参数传递给在链接函数内部确定的函数。

<div my-method='theMethodToBeCalled'></div>

在链接函数中,我绑定(bind)到 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,我可以让它工作,但是一旦我尝试传递参数,该函数就不再被调用

最佳答案

马科的solution works well

与推荐的 Angular 方式(如 treeface 的 plunkr 所示)对比,是使用不需要定义 expressionHandler 的回调表达式。在 marko 的示例中进行更改:

在模板中

<div my-method="theMethodToBeCalled(myParam)"></div>

在指令链接函数中

$(element).click(function( e, rowid ) {
scope.method({myParam: id});
});

与 marko 的解决方案相比,这确实有一个缺点 - 第一次加载时,将调用 myParam === undefined 的 MethodToBeCalled 函数。

可以在 @treeface Plunker 找到工作示例。

关于angularjs-directive - angularjs 指令调用属性中指定的函数并向其传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17556703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com