Angular - 将服务的功能设置为具有特定参数的函数调用

时间:2015-10-25 19:49:14

标签: javascript angularjs

我正在创建一个"服务"在AngularJS中(实际上使用.factory())。在其中,我声明并返回一个exports对象,该对象将作为注入服务的任何组件的接口,如下所示:

angular
    .module('app.core')
    .factory('exampleService', exampleService);

function exampleService() {
    var exports = {
        serviceFunction : serviceFunction
    };

    return exports;

    function serviceFunction(arg) {...};
}

我想要做的是在exports中声明一个属性,作为对具有预定参数的服务函数的函数调用。这个想法是这样的:

var exports = {
    serviceFunction : serviceFunction,
    someOtherFunction : serviceFunction('specific value')
};

//later calling it like so
exampleService.someOtherFunction();

然而,该函数将被评估,someOtherFunction将是返回值而不是函数调用,对吧?

有没有办法实现这一点,除了创建一个返回所需函数调用的函数

2 个答案:

答案 0 :(得分:1)

如何在ES5中为一个函数调用分配委托没有其他方法。只需将serviceFunction包装到另一个函数返回函数:

function serviceFunctionWrap() {
 return function() {
  return serviceFunction('specific value');
 }
}

然后

var exports = {
    serviceFunction : serviceFunction,
    someOtherFunction : serviceFunctionWrap()
};

或者内联:

var exports = {
    serviceFunction : serviceFunction,
    someOtherFunction : (function () {
      return serviceFunction('specific value');
    })
};

答案 1 :(得分:1)

var x = {
 funcOne : function(a){
   alert(a);
 }, 
 funcTwo : function(a){
  this.funcOne(a);
 },
}

x.funcTwo("hi"); // will launch first function passing it "hi" as argument;