Я хотел бы реализовать собственный пользовательский объект/классы в AngularJS. Тем не менее, я зацикливаюсь на концепции использования фабрик/сервисов в качестве пользовательских объектов - я понимаю, что фабрики и службы существуют для обеспечения бизнес-логики приложения, но могу ли я создать несколько заводов и сервисов в приложении? И если да, то что именно означает термин «singleton» (который многие из статей, которые я прочитал, описал как услуги)?Создание пользовательских объектов в AngularJS
Так, например, было бы это правильным и/или предпочтительным способом идти о создании базового объекта школы заполняется студентами объектов в AngularJS?
app.factory('schoolService',function(student){
var school = {};
school.students = [];
school.addStudent = function(){
var newStudent = new student();
this.students.push(newStudent);
}
return school;
}
app.service('student',function(){
//anyway to toss in a constructor here?
this.name = 'name';
this.getName = function(){
return this.name;
}
}
app.controller('schoolCtrl',function(schoolService){
schoolService.addStudent(); //obviously normally wouldn't do this, but for demonstration purposes
$scope.students = schoolService.students;
//expect $scope.students to equal an array of length 1, with one student object
}
заранее спасибо, и извините за все вложенные вопросы!
Спасибо за ответ Робом, но где бы я определить объект студент, и как бы я впрыскивать его в сервис? Было бы так же просто, как определить var с объектом-учеником и использовать функцию SchoolService (student)? Благодаря! – Ted
Вы говорите о новом студенте? – Rob
Вид - В идеале я хотел бы сделать учеником класс, который имеет свои функции, данные и т. Д., Чтобы избежать захламления фабрики. Таким образом, $ scope.students и SchoolService.students, например, будут массивом объектов-учеников из студенческого класса. Я понимаю, что ваш пример будет работать для этой цели, но приложение, над которым я работаю в настоящее время, намного сложнее, и есть множество вычислений и данных, которые мне нужно хранить, которые не поступают непосредственно из пользовательского ввода. – Ted