Вот 3 угловые фабрики у меня есть:Завод AngularJS может вводить другие фабрики?
angular.module('myApp', []);
angular.module('myApp').factory('**ClassA**', function() {
return {
object: {"id":-1, "name": "abc"}
};
});
angular.module('myApp').factory('**ClassB**', function() {
return {
object : {"city":"cc","state":"NJ"}
};
});
angular.module('myApp').factory('**ClassAB**', function() {
return {
object:{
ClassA: {"id":-1, "name":"pqr"},
ClassB: {"city":"aa", "state":"NY"}
}
};
});
Есть ли способ, чтобы включить или ссылаться CLASSA и ClassB, так что я не должен дублировать код. Что-то вроде этого будет NOT передает данные обратно в ClassA или ClassB.
angular.module('myApp').factory('**ClassAB**', function(ClassA, ClassB){
return {
object:{
"ClassA": ClassA.object,
"ClassB": ClassB.object
}
};
});
Я не хочу данных, которые будут связаны с класса А или В только опорный класс т.е. в контроллере, когда я говорю:
angular.module('myApp').controller('MyController', function($scope, $filter, ClassA, ClassB, ClassAB) {
console.log("ClassA before:" +ClassA.object.name);
ClassAB.object.classA.name="xyz";
console.log("ClassAB :"ClassAB.object.ClassA.name);
console.log("ClassA after:"ClassA.object.name);
}
я получаю:
ClassA before: abc
ClassAB : xyz
ClassA after: xyz
Я бы хотел бы увидеть примерно следующее:
ClassA before: abc
ClassAB : xyz
ClassA after: abc
Awesome. Спасибо за подсказку, я на самом деле попытался сделать копию на заводе, чтобы диспетчер не беспокоился об этом ... делает его намного чище и выполняет то же самое. «angular.module (« myApp »). factory ('** ClassAB **', функция (ClassA, ClassB) { return { объект: { " ClassA ": угловое копирование (ClassA.object), " ClassB ": angular.copy (ClassB.object) } }; }); ' –