Я пытаюсь включить дополнительные «модельные» объекты, которые полезны в моем приложении «Угловое». Предположим, у меня есть два отдельных файла javascript, как показано ниже. Я хотел бы добавить функцию «createStudent» к прототипу моего учителя и вызвать вызов метода конструктора ученика. Как может teacher.js правильно указать student.js? Какой метод для инъекции здесь?Значения модуля ввода в угловом
FYI, я знаю, что существует множество методов для включения моделей с богатыми объектами в Angular. Например, я не хочу идти по пути использования Restangular. Я хочу, чтобы это было очень просто на данный момент и, надеюсь, увеличило мое понимание угловых модулей.
Спасибо!
---------- teacher.js -----------
(function() {
var teacherConstructor = function() {
var teacher = {
student: []
};
return teacher;
};
var module = angular.module("MyApp.models");
module.value("teacber", teacberConstructor);
}());
--------- - student.js
(function() {
var studentConstructor = function(theTeacher) {
var student = {
myTeacher: theTeacher
};
return student;
};
var module = angular.module("MyApp.models");
module.value("student", studentConstructor);
}());
Спасибо! Это освещает. Следующий вопрос: Я предполагаю, что только один из этих вызовов .factory() может вводить другой, иначе у меня будет циклическая зависимость. Поэтому я должен выбрать, создает ли Учитель новых учеников, или Студент создает своего учителя. Это правильно? И комментарий: Я пытался избежать использования «нового» ключевого слова в соответствии с книгой Крокфорда «Javascript: The Good Parts», потому что использование функции конструктора в отличие от нового Teacher() предлагает множество преимуществ, например, возможность принудительного использования частных и открытых функций на объекте. –
Привет! О круглости: Да, вы правы - но это будет проблемой на любом языке. У вас все еще могут быть частные члены с оператором 'new', я, конечно, могу пропустить некоторые детали. Но наиболее продуктивным (IMO) является выбор стиля, который вам подходит, так что, без проблем с конструкторскими функциями. (Некоторые люди даже возражают, что полностью откажутся от логики OO и полностью перейдут в функционал с помощью Javascript :) –
Угловая, кажется, поддается функциональному программированию, предоставляя сервисы, которые, насколько я вижу, прямолинейны. Я подумал о том, чтобы просто сгладить мой объектный граф в кучу эффективно статических функций, но не мог заставить себя это сделать. –