代码之家  ›  专栏  ›  技术社区  ›  Jesper Wilfing

骨干模型中的集合未定义,即使在初始化函数中实例化

  •  0
  • Jesper Wilfing  · 技术社区  · 11 年前

    在下面的主干模型中,我有一个嵌套的主干集合。

    var Student = Backbone.Model.extend({
        firstName: null,
        lastName: null,
        initialize: function() {
            this.programCollection = new ProgramCollection({});
        }
    });
    
    var ProgramCollection = Backbone.Collection.extend({ 
        model: Program
    });
    

    然而,当尝试将程序对象添加到集合时,如。。。

    var testStudent = new Student();
    testStudent.get("programCollection").add(new Program());
    

    我得到以下错误:

    无法获取属性“add”的值:对象为null或未定义

    显然我做的事情不对,因为程序集合是未定义的。

    1 回复  |  直到 4 年前
        1
  •  0
  •   Peter Lyons    11 年前

    模型实例的财产直接与 attributes 财产。如果您希望模型实例具有一个集合,而该集合不是要直接存储在该学生记录上的数据,请将其设置为模型实例属性(就像您正在做的那样),然后直接访问它,而不调用 get .

    var testStudent = new Student();
    testStudent.programCollection.add(new Program());