在Angular中注入模块值

时间:2015-01-12 21:20:55

标签: angularjs

我正在尝试添加其他'模型'在我的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);
}());




1 个答案:

答案 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;
}]);

作为旁注,习惯于"类"从资本开始。即StudentTeacher。构造函数也可以具有类的名称,因此在上面的代码中teacherConstructorTeacher