从相同的服务调用AngularJS服务中的函数?
我有一个AngularJS服务以下面的方式定义
angular.module('myService').service('myService',function() { this.publicFunction(param) { ... }; this.anotherPublicFunction(param) { // how to call publicFunction(param)? ... }; }); 并且我想调用第一个函数从服务外(通过myService.publicFunction(xxx))和从同一服务中的另一个函数,即anotherPublicFunction。这个.publicFunction(param)或myService.publicFunction(param)都不会在第二个函数内工作,我可以理解。 编辑: 例如。 anotherService.someCall('a',123,myService.anotherPublicFunction); 失败在anotherPublicFunction内,因为这无法解决。 我写了一个Plunker来显示问题: (我仍然会在这里留下问题,以防它会帮助别人。) 我知道我可以通过使用引用服务或第一个函数来解决这个问题 var ms = this; this.anotherPublicFunction(param) { ms.publicFunction(param); ... }; 或这个 var pf = this.publicFunction; this.anotherPublicFunction(param) { pf(param); ... }; 但两个看起来像脏的黑客。 在这种情况下有没有一个好的方法来调用第二个函数的第一个函数?或者我在做一些完全错误的第一个地方有这样的服务? 我发现这些问题有很好的答案: > Angularjs share functions inside service 但它们不同于我的问题,因为其中一个有一个单独的内部函数被调用,另一个使用工厂而不是服务。 编辑: 发布后,我立即意识到,我也可以这样做: 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; 因为我认为如果你使用这个,它可能会与使用服务的范围冲突。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |