2014-01-10 3 views
0

Я добавил хранилище экземпляров к моим моделям. Когда я вручную создаю объект с идентификатором, он работает и возвращает либо новую, либо уже существующую модель. Как я могу интегрировать эту функциональность в базовые коллекции. Можете ли вы дать мне подсказку, какой метод/методы мне нужно переопределить?Интеграция хранилища экземпляров в коллекцию Backbone

Мой экземпляр кода магазин выглядит следующим образом:

define(function(require) { 
    var Backbone = require('backbone'); 
    return Backbone.Model.extend({ 
     constructor: function(attributes, options) { 
      var id = attributes ? attributes.id : undefined; 
      if(this.store[id]) 
       return this.store[id]; 
      Backbone.Model.prototype.constructor.apply(this, arguments); 
      if(id) 
       this.store[id] = this; 
      this.count[id] = this.count[id] ? this.count[id] + 1 : 1; 
     } 
    }); 
}); 

Я благодарен за любую идею или намек!

ответ

0

Хорошо, я нашел свою тупую ошибку.

Если кто-то заинтересован в такого рода решения:

Там нет ничего плохого в том перекрывая конструктор, как я сделал. Отлично работает. Вам не нужно переопределять какие-либо другие методы в Backbone.

Но вы должны правильно установить модель-свойство коллекции. Это была моя ошибка. Я этого не сделал.

define(function(require) { 
    var Base = require('collections/base'), 
     Category = require('models/category'); 

    return Base.extend({ 
     model: Category, //<-- Important! 
     url: function() { 
      return App.serverUrl + 'categories'; 
     }, 
     initialize: function() { 
      this.fetch(); 
     } 
    }); 
}); 
Смежные вопросы