我是AngularJS新手,我刚刚开始了解factory
,service
和controller
的概念和差异。据我所知,factory
用于返回可以注入的“值对象”。大多数例子我见过做这样的事情:创建注入类(构造函数)
angular.module('module.factories', function() {
factory('FactoryObject', function() {
return {
someFunction: function(someParam) {};
someOtherFunction: function(someOtherParam) {});
};
});
});
在我controller
,我希望能够使用这个对象,但我想初始化/控制器初始化它,因为它可以被重新 - 根据控制器中的事件/动作初始化。因此,我想知道是否可以在工厂中返回构造函数吗?
angular.module('module.factories', function() {
factory('FactoryObject', function() {
function FactoryObject(initParam) {
}
FactoryObject.prototype.someFunction = function() {};
return FactoryObject;
});
});
这是一个合适的角厂模式?或者仅仅是“矫枉过正”使用工厂来制作像这样的自定义对象?我应该把它包含在一个库js文件中,并从那里引用它?将其放入工厂的一个好处是,它可以很容易地在测试中嘲讽它,因为它会被注入到使用的地方。 Angular中是否有其他机制可以用来代替?
我认为在提供函数中声明自定义工厂对象的重点在于它从应用程序的其余部分中抽象出来。 – Bart
如果你确实需要一个构造函数,那么你在做什么很好! – ganaraj
@ganaraj我“需要”它的原因是它可能会在控制器的生命周期中在控制器中多次重新初始化。我可以只返回一个常规对象,然后在其上有一个'init'方法,但我不明白那会更好。感谢您的反馈。 – NilsH