我正在尝试添加其他'模型'在我的Angular应用程序中有用的对象。假设我有两个单独的javascript文件,如下所示。我想添加一个" createStudent"函数到我的老师原型,并让它调用学生构造函数方法。 teacher.js如何正确引用student.js?在这里注射的方法是什么?
仅供参考,我知道有很多方法可以在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);
}());

答案 0 :(得分:2)
可能的解决方案 - 使用factory
:
(function() {
var module = angular.module("MyApp.models");
module.factory("teacher", ["student", function(Student) {
var teacherConstructor = function() {
...
var student = new Student(this);
...
};
return teacherConstructor;
}]);
})();
无论如何,老师的定义" class"必须在Angular的定义功能中完成,因为它能够引用学生。
然而,这引入了一个不必要的关闭。我建议删除外部函数,支持Angular的本地方式:
angular.module("MyApp.models").factory("Teacher", ["student", function(Student) {
var Teacher = function() {
...
var student = new Student(this);
...
};
return Teacher;
}]);
作为旁注,习惯于"类"从资本开始。即Student
,Teacher
。构造函数也可以具有类的名称,因此在上面的代码中teacherConstructor
→Teacher
。