在相同的服务中但在$ watchcollection内调用AngularJS服务中的函数

时间:2013-11-18 16:30:39

标签: javascript angularjs service

这是本主题的后续问题: Calling a function in AngularJS service from the same service?

我意识到太晚了,我应该打开一个新问题而不是在那里问它(对不起)

我想要执行以下操作:调用服务函数中的函数,并且调用在$ watchCollection内的额外难度。它看起来像这样:

返回{

myFunc1: function(param) {

},

myFunc2: function(scope,param) {

    scope.$watchCollection(param,function(v) {

      return foo + this.myFunc1(param)// do some stuff with the first function 

    }       
}

} 由于函数(v){您现在处于函数内的另一个函数中,this不再是服务而是window

如何在myFunc2 $ watchCollection参数函数中访问此myFunc1?

提前致谢

1 个答案:

答案 0 :(得分:9)

您可以将this保存在另一个变量(通常称为selfthat)中,并使用它来访问myFunc1

myFunc1: function(param) {

},

myFunc2: function(scope,param) {

    var self = this;
    scope.$watchCollection(param,function(v) {

      return foo + self.myFunc1(param)// do some stuff with the first function 

    }       
}