У меня есть две модели (пользовательская и задача), которые являются экземплярами Backbone.RelationalModel
.
Отношение к этим двум моделям следующее:
// Task model
var Task = Backbone.RelationalModel.extend({
relations: [
{
type: 'HasOne',
key: 'user',
relatedModel: User
}
],
urlRoot: 'someUrl'
});
Затем у меня есть одна коллекция, код которой выглядит так:
var FollowerCollection = Backbone.Collection.extend({
initialize: function () {
_.bindAll(this);
}
model: User
});
var User = Backbone.RelationalModel.extend({
});
Когда я делаю выборку для FollowerCollection, я получаю следующую ошибку:
Uncaught TypeError: Cannot read property 'idAttribute' of undefined
в строке 1565 backbone-relation.js из backbone-relation version 0.5.0
Вот кусок кода backbone-relation.js
if ( !( model instanceof Backbone.Model ) ) {
// Try to find 'model' in Backbone.store. If it already exists, set the new properties on it.
var existingModel = Backbone.Relational.store.find( this.model, model[ this.model.prototype.idAttribute ] );
Проблема связана с _.bindAll(this)
, потому что если я его прокомментирую, он работает нормально.
Почему? Есть идеи?
User
определена при объявлении отношения? - person rinat.io   schedule 29.06.2012_.bindAll(this)
. Можете ли вы объяснить мне, почему это тормозит код? Я изменил название своего вопроса. - person Lorraine Bernard   schedule 29.06.2012_.bindAll(this)
связываетthis
с каждой функцией в вашей коллекции, так что может случиться что угодно. Скорее всего, это приведет к тому, чтоthis.model
илиthis.model.prototype
будут чем-то иным, чем того ожидает Backbone-relational. Нужен ли bindAll? Если это необходимо для какой-то функции в вашей коллекции, сделайте_.bindAll(this, 'funcname1', 'funcname2', ..., 'funcnameN')
, чтобы выделить функции, к которым нужно привязатьthis
. - person jakee   schedule 29.06.2012