如何使用我在当前工厂中定义的方法?
How can I use a method I defined in the current Factory?
我有一个正在工作的工厂,它引用了工厂返回的对象中定义的方法。当我提醒它们或 console.log 时,这些方法都是未定义的。有没有办法引用同一个工厂中定义的方法?换句话说,有没有办法实现我在下面说明的内容?
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;
}
}]);
这是我喜欢使用的模式,因为它非常清楚哪些是公开公开的函数,哪些只是内部细节。
例如,您可以让其他人使用一个 'private' 函数,但不会被服务公开。非常好用。
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;
}
}]);
可以在 http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html 找到一篇很好且透彻的文章,希望它能给您一些进一步的见解。
我建议你这样做。
angular.module('myModule').factory('myFactory', function() {
var method1 = function(){ return 1; };
return {
method1: method1,
method2: function () {
return method1 + 1;
}
}]);
我有一个正在工作的工厂,它引用了工厂返回的对象中定义的方法。当我提醒它们或 console.log 时,这些方法都是未定义的。有没有办法引用同一个工厂中定义的方法?换句话说,有没有办法实现我在下面说明的内容?
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;
}
}]);
这是我喜欢使用的模式,因为它非常清楚哪些是公开公开的函数,哪些只是内部细节。
例如,您可以让其他人使用一个 'private' 函数,但不会被服务公开。非常好用。
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;
}
}]);
可以在 http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html 找到一篇很好且透彻的文章,希望它能给您一些进一步的见解。
我建议你这样做。
angular.module('myModule').factory('myFactory', function() {
var method1 = function(){ return 1; };
return {
method1: method1,
method2: function () {
return method1 + 1;
}
}]);