加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

从相同的服务调用AngularJS服务中的函数?

发布时间:2020-12-17 09:05:59 所属栏目:安全 来源:网络整理
导读:我有一个AngularJS服务以下面的方式定义 angular.module('myService').service('myService',function() { this.publicFunction(param) { ... }; this.anotherPublicFunction(param) { // how to call publicFunction(param)? ... };}); 并且我想调用第一个函
我有一个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来显示问题:
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);
  ...
};

但两个看起来像脏的黑客。

在这种情况下有没有一个好的方法来调用第二个函数的第一个函数?或者我在做一些完全错误的第一个地方有这样的服务?

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

> Angularjs share functions inside service
> AngularJs call an internal service function from self

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

编辑:

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

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;

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读