給出關於兩個(只是語法)之間的差別更好的解釋,加入了更多的功能,有助於
有廠家
var canvas = FactoryCanvas.Canvas(123);
angular.module('app')
.factory('FactoryCanvas', function() {
// This is private
var x = "x";
var foo = function foo(){
return "foo";
}
// This is public and can be accessed by the controller
return {
Canvas : function (id) {
alert(id);
},
getX : function(){
return x;
},
getFoo : foo
};
});
隨着服務
var canvas = FactoryCanvas.Canvas(123);
angular.module('app')
.service('FactoryCanvas', function() {
// Angular automatically creates a `new` object when called
// This is private!
var x = "foo";
var y = function(){
return "foo";
};
// This is public
this.Canvas = function (id) {
alert(id);
};
this.getX = function(){
return x;
};
});
從AngularJS運行起來
出廠定義您的服務,如果:
- 你跟編程
的功能性的風格 - 你喜歡返回函數和對象。
很難相信這是唯一的區別,但它是。
正如您所看到的,服務更具可讀性。
你創建一個類只能用。服務。在工廠中,你返回一個具有函數的對象 – gr3g
這給出了關於如何使用工廠的相當好的解釋:https://docs.angularjs.org/guide/providers#factory-recipe – seanhodges