我有我的主要服务:
(function (angular) {
"use strict";
angular
.module("app")
.service("mainService", mainService);
mainService.$inject = ["classLibrary"];
function mainService(classLibrary) {
this.person = new classLibrary.Person("Name", "Surname");
};
})(window.angular);
下一个所谓的类库:
(function (angular) {
"use strict";
angular
.module("app")
.service("classLibrary", classLibrary); // service/factory/provider ?
function classLibrary() {
// Classes:
this.Person = function(name, surname) {
this.name = name;
this.surname = surname;
};
};
})(window.angular);
问题是:我应该为我的类库使用什么角度组件。我想过服务或工厂,但不确定在我的情况下什么更好。
答案 0 :(得分:1)
答案是出厂并使用以下代码添加工厂
(function (angular) {
"use strict";
angular
.module("app")
.factory("classLibrary", classLibrary);
var classLibrary function() {
// Classes
var obj = {
fieldname1: "val1",
fieldname2: "value2"
};
//if your using array of objects use this
var objArray =[];
return
{
obj :obj ,
objArray:objArray
}
});
})();
工厂可以包含所有classess和相关属性。 如果要在类中使用函数。您需要创建一个单独的工厂,可以通过控制器使用这些类及其属性。
包含方法的工厂将是这样的。
module.factory('ServicecontainingMethods', function(){
return{
methodName1:function(){
},
methodName2:function(params){
},
}
});
答案 1 :(得分:0)
根据对此主题的评论和回答,我得到了下一个解决方案
(function (angular) {
"use strict";
angular
.module("app")
.factory("classLibrary", classLibrary);
function classLibrary() {
var factory = {
getPerson: function(name, surmane) { return new Person(name, surname); },
getManager: function(name, surmane) { return new Manager(name, surname); }
};
// Private members
function Person(name, surname) {
this.name = name;
this.surmane = surname;
this.toString = function() {
return this.name + this.surname;
};
}
function Manager(name, surname) {
this.constructor.prototype = Person;
this.manager = true;
}
// ---
return factory;
};
})(window.angular);