2013-03-09 4 views
0

У меня есть модель под названием score и коллекция под названием scores. Тем не менее, модель, похоже, не наследует свойство localStorage (или, если на то пошло, какое-либо свойство) из родительской коллекции. Я что-то упустил?Backbone.js Модель не наследует от коллекции

Запуск магистрали с требованием.

модели/score.js

define([ 
    'underscore', 
    'backbone', 
    'localstorage' 
], function(_, Backbone, Store){ 
    var ScoreModel = Backbone.Model.extend({ 
     defaults: { 
      board_id: null, 
      ns_pair: null, 
      ew_pair: null, 
      ns_score: null 
     }, 
     validate: function(attrs, options){ 
      if(isNaN(attrs.board_id) || attrs.board_id < 1){ 
       return 'Invalid Board ID!'; 
      } 
     }, 
     localStorage: new Store("ScoreCollection") 
    }); 
    return ScoreModel; 
}); 

коллекции/scores.js

define([ 
    'underscore', 
    'backbone', 
    'models/score', 
    'localstorage' 
], function(_, Backbone, ScoreModel, Store){ 
    var ScoreCollection = Backbone.Collection.extend({ 
     model: ScoreModel, 
     localStorage: new Store("ScoreCollection") 
    }); 
    return ScoreCollection; 
}); 

main.js

require.config({ 
    paths: { 
    // Major libraries 
    jquery: 'libs/jquery/jquery.min', 
    underscore: 'libs/underscore/underscore.min', 
    backbone: 'libs/backbone/backbone.min', 

    // Require.js plugins 
    text: 'libs/require/text', 

    // Backbone.js plugins 
    localstorage: 'libs/backbone/localstorage', 

    // Just a short cut so we can put our html outside the js dir 
    // When you have HTML/CSS designers this aids in keeping them out of the js directory 
    templates: '../templates' 
    } 
}); 

// Let's kick off the application 

require([ 
    'app' 
], function(App){ 
    App.initialize(); 
}); 
+0

Я не вижу, чтобы ваши данные наследовали что-то еще, кроме Backbone.Collection и Backbone.Model. Также я думаю, что вам не нужно объявлять localStorage на вашей модели. – snedkov

+0

@svetoslavnedkov Проблема в том, что localStorage не работает, если я не объявляю его в своей модели. Это должно быть, но это не так. – mushroom

+0

Можете ли вы опубликовать код, который не работает? – snedkov

ответ

0

Магистральная модель s не наследуются от Backbone Collections. Это просто расширения базы Backbone.Model, что вы «расширяете» своими собственными свойствами и методами. Коллекции, та же сделка. Вы можете указать, что модель коллекции основана на определенной модели, которую вы определили, так что когда коллекции добавляются к ней, она использует конструктор модели для создания экземпляров для каждой модели в этой коллекции, но там нет прямого отношения наследования. Вы можете определить свойство в модели, которая является экземпляром коллекции, если это соответствует вашим потребностям.

Смежные вопросы