Backbone Model获取未定义的数据

时间:2013-11-20 13:45:37

标签: javascript json backbone.js

我创建了一个骨干模型如下

var note_model = Backbone.Model.extend({
    default    : {
        HistoryKey  : "",
        InsertDate  : "",
        MemberKey   : "",
        NoteDate    : "",
        ContactNote : "",
        UserId      : ""
    },
    initialize : function(note) { 
        this.HistoryKey  = note.historykey;
        this.InsertDate  = note.insertdateUTC;
        this.MemberKey   = note.memberkey;
        this.NoteDate    = note.notedateUTC;
        this.ContactNote = note.contactnote;
        this.UserId      = note.userid; 
        console.log(this.get('HistoryKey'));
    }
});

现在我创建了一个集合,其中定义了一个url,并使用collection的fetch方法填充模型。现在,只要我使用

访问模型数据,就填充模型
model_object.HistoryKey 

我正在获取数据但是当我尝试使用

model_object.get("HistoryKey")

我得到了未定义的值。 JSON数据的结构就是这样的

    {
        "historykey": 4,
        "insertdateUTC": "2013-11-15T23:21:44.247",

    }

但是,如果我使用

model_object.get("historykey")

我收到了正确的数据。 我的问题是为什么我没有使用member.get(“HistoryKey”)获取数据。

2 个答案:

答案 0 :(得分:1)

您应该在this.set("HistoryKey", note.historykey)方法中使用initialize。你正在做的是在对象上设置属性,但你想要做的是在Backbone模型上设置一个属性。如果您在示例中使用console.log(this.HistoryKey)方法编写initialize,则获取您要查找的值。阅读:http://backbonejs.org/#Model-set

答案 1 :(得分:0)

您应该使用set来更改模型的属性:

this.set('HistoryKey', note.historykey);
this.set('InsertDate', note.insertdateUTC);
this.set('MemberKey', note.memberkey);
this.set('NoteDate', note.notedateUTC);
this.set('ContactNote', note.contactnote);
this.set('UserId', note.userid); 

get可以访问这些属性。