带有参数的AngularJS方法调用

问题描述 投票:1回答:1

我正在处理别人的代码,但我还不完全了解。此外,我对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”元素,但到目前为止没有结果。

我该如何进行这项工作?

angularjs method-invocation
1个回答
2
投票

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)

使用此模式时请记住,动态功能签名必须兼容。如果他们开始分歧(如您所说,您正在编辑别人的代码),则应重构以其他方式处理此问题。

© www.soinside.com 2019 - 2024. All rights reserved.