AngularJS Factory中的enforce参数是什么意思
What is the meaning of enforce parameter in AngularJS Factory
我正在详细了解 angular 如何仅使用 module.factory() 方法实际创建工厂。
我发现在内部 angular 使用以下仅在内部使用提供程序的方法
function factory(name, factoryFn, enforce)
所以我的问题是关于这个函数的第三个参数 enforce
,它实际上做了什么。
创建 Angular 服务或工厂时,在幕后,Angular 最终对两者使用相同的函数:
function factory(name, factoryFn, enforce) {
return provider(name, {
$get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn
});
}
创建服务时,一般不会发送return值,在后台调用Object.create()
创建包含sayHello
方法的对象
app.service('MyService', function () {
this.sayHello = function () {
console.log('hello');
};
});
但是,在创建工厂时,对象字面量是 returned:
app.factory('MyService', function () {
return {
sayHello: function () {
console.log('hello');
};
}
});
基本上,enforce 用于强制执行 return 值。这不仅仅是 "Is this a service or factory?" 的问题,因为如果您愿意,您仍然可以 return 来自服务的对象文字:
app.service('MyService', function () {
return {
sayHello: function () {
console.log('hello');
};
}
});
关于问题:"Which should you use?" 看看这个:
http://blog.thoughtram.io/angular/2015/07/07/service-vs-factory-once-and-for-all.html
我正在详细了解 angular 如何仅使用 module.factory() 方法实际创建工厂。
我发现在内部 angular 使用以下仅在内部使用提供程序的方法
function factory(name, factoryFn, enforce)
所以我的问题是关于这个函数的第三个参数 enforce
,它实际上做了什么。
创建 Angular 服务或工厂时,在幕后,Angular 最终对两者使用相同的函数:
function factory(name, factoryFn, enforce) {
return provider(name, {
$get: enforce !== false ? enforceReturnValue(name, factoryFn) : factoryFn
});
}
创建服务时,一般不会发送return值,在后台调用Object.create()
创建包含sayHello
方法的对象
app.service('MyService', function () {
this.sayHello = function () {
console.log('hello');
};
});
但是,在创建工厂时,对象字面量是 returned:
app.factory('MyService', function () {
return {
sayHello: function () {
console.log('hello');
};
}
});
基本上,enforce 用于强制执行 return 值。这不仅仅是 "Is this a service or factory?" 的问题,因为如果您愿意,您仍然可以 return 来自服务的对象文字:
app.service('MyService', function () {
return {
sayHello: function () {
console.log('hello');
};
}
});
关于问题:"Which should you use?" 看看这个:
http://blog.thoughtram.io/angular/2015/07/07/service-vs-factory-once-and-for-all.html