Angularjs 如何使用在当前工厂中定义的方法?
我有一个工厂,我正在使用它来引用工厂返回的对象中定义的方法。I当我向这些方法或console.log发出警报时,它们都未定义。是否有方法引用同一工厂中定义的方法?换句话说,有没有一种方法可以实现我在下面阐述的目标Angularjs 如何使用在当前工厂中定义的方法?,angularjs,angularjs-factory,Angularjs,Angularjs Factory,我有一个工厂,我正在使用它来引用工厂返回的对象中定义的方法。I当我向这些方法或console.log发出警报时,它们都未定义。是否有方法引用同一工厂中定义的方法?换句话说,有没有一种方法可以实现我在下面阐述的目标 angular.module('myModule').factory('myFactory', ['$window', '$q', '$rootScope', '$http', function($window, $q, $rootScope, $http) { return {
angular.module('myModule').factory('myFactory', ['$window', '$q', '$rootScope', '$http', function($window, $q, $rootScope, $http) {
return {
method1: function () {
return 1;
},
{
method2: function () {
return this.method1 + 1;
}
}]);
由于javascript的功能,您可以编写以下内容:
angular.module('myModule').factory('myFactory', ['$window', '$q', '$rootScope', '$http', function($window, $q, $rootScope, $http) {
return {
method1: method1,
method2: method2
};
function method1(){
return 1;
}
function method2() {
return method1() + 1;
}
}]);
这是我喜欢使用的模式,因为它可以非常清楚地显示哪些是公开的函数,哪些只是内部细节
例如,您可以拥有其他人使用的“私有”函数,但不会被服务公开。非常方便
angular.module('myModule').factory('myFactory', ['$window', '$q', '$rootScope', '$http', function($window, $q, $rootScope, $http) {
return {
method1: method1,
method2: method2
};
function method1(){
return 1 + privateMethod1();
}
function method2() {
return method1() + 1;
}
// Not returned by service, so private.
function privateMethod1() {
return 3;
}
}]);
可以找到一篇好的、透彻的文章,希望能给您提供一些进一步的见解。我建议您这样做
angular.module('myModule').factory('myFactory', function() {
var method1 = function(){ return 1; };
return {
method1: method1,
method2: function () {
return method1 + 1;
}
}]);