gpt4 book ai didi

angularjs - 从同一个服务调用 AngularJS 服务中的函数?

转载 作者:行者123 更新时间:2023-12-03 05:19:36 25 4
gpt4 key购买 nike

我有一个按以下方式定义的 AngularJS 服务

angular.module('myService').service('myService', function() {
this.publicFunction(param) {
...
};

this.anotherPublicFunction(param) {
// how to call publicFunction(param)?
...
};
});

我想从服务外部(通过 myService.publicFunction(xxx) 正常工作)和同一服务中的另一个函数(即 anotherPublicFunction )调用第一个函数。 。 this.publicFunction(param) 都不是或myService.publicFunction(param)在第二个函数中不起作用,我可以理解这一点。

<小时/>

编辑:
实际上,整个问题是由您无法仅用我的示例重现的某些原因引起的。我将第二个函数作为回调参数传递给单独 Controller 中的另一个函数,当调用它时,引用 this不起作用。

例如

anotherService.someCall('a', 123, myService.anotherPublicFunction);

anotherPublicFunction 内失败因为this无法解决。

我写了一个 Plunker 来显示问题: http://plnkr.co/edit/rrRs9xnZTNInDVdapiqF?p=info

(我仍然会将问题留在这里,以防对其他人有帮助。)

<小时/>

我知道我可以通过使用对服务的引用或像这样的第一个函数来解决这个问题

var ms = this;
this.anotherPublicFunction(param) {
ms.publicFunction(param);
...
};

或者这个

var pf = this.publicFunction;
this.anotherPublicFunction(param) {
pf(param);
...
};

但两者看起来都像是肮脏的黑客。

在这种情况下,有没有好方法从第二个函数调用第一个函数?或者我一开始就做错了什么才能获得这样的服务?

我发现这些问题有很好的答案:

但它们与我的问题不同,因为其中一个有一个要调用的单独的内部函数,而另一个则使用工厂而不是服务。

编辑:

发布此内容后,我立即意识到我也可以这样做:

var actualWork = function(param) {
...
}

this.publicFunction(param) {
actualWork(param);
};

this.anotherPublicFunction(param) {
actualWork(param);
...
};

到目前为止,这似乎并不像其他选项那么糟糕......有更好的方法吗?

最佳答案

我认为最好的方法是这样:

var myFunctions = 
{

myFunc1: function(param) {

},

myFunc2: function(param) {
return foo + myFunctions.myFunc1(param)// do some stuff with the first function
}

}
return myFunctions;

因为我认为如果您使用这个,它可能会与您使用该服务的范围发生冲突。

关于angularjs - 从同一个服务调用 AngularJS 服务中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19842669/

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