未捕获的TypeError:无法读取未定义的属性'idAttribute'

时间:2013-07-02 01:22:37

标签: backbone.js backbone-relational

我正在使用Backbone-Relational,我收到以下错误:

Uncaught TypeError: Cannot read property 'idAttribute' of undefined

当我访问show_note路线时。

App.Router = Backbone.Router.extend({
  routes: {
    'note/:_id': 'show_note'
  },

  show_note: function(_id) {
    console.log('this is the show_note route for _id: ' + _id);
    var note = new App.Models.Note.findOrCreate({ _id: _id });
    var note_view = new App.Views.main_note({ model: note });
    note.fetch();
  }
});

console.log收到'_id'。但是当我尝试实例化var note时,我收到了错误。我该如何解决这个问题?

编辑1

添加Note模型:

App.Models.Note = Backbone.RelationalModel.extend({
  urlRoot: '/notes',
  idAttribute: '_id',
  relations: [{
    type: Backbone.HasMany,
    key: 'tags',
    relatedModel: 'App.Models.Tag',
    reverseRelation: {
      key: 'note',
      includeInJSON: '_id'
    }
  }]
});

编辑2

Stacktrace添加

enter image description here

1 个答案:

答案 0 :(得分:0)

我通过删除findOrCreate()解决了这个问题,并最终检索了模型数据,如下所示:

App.Router = Backbone.Router.extend({
  routes: {
    'note/:_id': 'show_note'
  },

  show_note: function(_id) {
    var note = new App.Models.Note({ _id: _id });
    note.fetch({
      success: function(data) {
        var mainNoteView = new App.Views.main_note({ model: note });
        $('#mainNote').append( mainNoteView.render().el );
      },
      error: function(err) {
        console.log(err);
      }
    });
  }
});