首页 > 解决方案 > 带参数的AngularJS方法调用

问题描述

我正在处理别人的代码,但我还没有完全理解它。此外,我对 AngularJS 还是很陌生。

他们有一个看起来像这样的类:

return vm.item[vm.function](request).$promise.then(function (data) {
    ...
});

当我的 vm.function 没有参数时,它可以完美运行。我只是做

vm.function = "myFunction"

并且 myFunction 按预期被调用。

但是,现在我需要调用一个具有“id”参数的函数。我已经试过了

vm.function = "myFunction(0)"
vm.function = "myfunction({id:0})"

甚至在“request”变量中添加了一个“id”元素,但到目前为止还没有结果。

我怎样才能使这项工作?

标签: angularjsmethod-invocation

解决方案


vm.function只是函数的名称,它没有说明参数。让我们分解这里发生的事情。

vm.function = 'myFunction';

vm.item[vm.function](request)

翻译成

vm.item['myFunction'](request)

这相当于

vm.item.myFunction(request)

如您所见,它已经传递了一个request参数。要添加另一个,您只需执行以下操作:

vm.item[vm.function](request, id)

使用此模式时请记住,您的动态函数签名必须兼容。如果它们开始出现分歧(正如您所说,您正在编辑其他人的代码),您应该重构以以不同的方式处理这个问题。


推荐阅读