绑定以添加backbone.js集合

时间:2012-01-24 16:13:52

标签: javascript backbone.js

我想在骨干集合的所有实例中获取后,将模型的ID设置为正确的值,但这似乎不起作用:

var NoteCollection = Backbone.Collection.extend(
{
    model: Note,
    initialize: function () {
        this.bind("add", function (note) {
            if (!note.id && note.has('noteid'))
                note.id = note.get('noteid');
        });
    } 
});

函数永远不会被调用(我正在通过创建一个新的NoteCollection并在其上调用fetch进行测试),我做错了什么?

注意:我知道我可以在NoteCollection的特定实例上绑定该方法,并且可行,但我想将其绑定在所有实例上。

1 个答案:

答案 0 :(得分:2)

这可能是因为note.id返回true。

好消息是Backbone已经有了一个约定,可以将模型的id属性设置为模型上的特定属性。这可以通过设置idAttribute(请参阅Backbone的来源中的this line

来完成
var Note = Backbone.Model.extend({
  idAttribute: 'noteid'
});

使用此代码,Backbone将负责设置note.id = note.get('noteid')