我正在创建一个"服务"在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
将是返回值而不是函数调用,对吧?
有没有办法实现这一点,除了创建一个返回所需函数调用的函数?
答案 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;