AngularJS 带参数的方法调用

AngularJS method invocation with parameters

我正在研究别人的代码,但我还没有完全理解它。此外,我是 AngularJS.

的新手

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

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" 元素,但到目前为止还没有结果。

我怎样才能使这个工作?

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)

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