2013-08-09 2 views
0

У меня есть модель, которая хранит некоторые другие модели в массиве атрибутов. Однако, когда эти модели хранятся, я не хочу поддерживать подмодули вокруг - вместо этого я хочу сохранить первичные ключи, а затем, когда модель будет извлечена с сервера, ее синтаксический анализ будет «восстанавливать» их путем выбора соответствующих моделей.Backbone.js разбор для сохранения

Каков наилучший подход к достижению этого? Ближайший я пришел, чтобы получить его на работу является переопределение метод синхронизации:

sync : function(method, model, options) { 
    var topics = this.get('topics'); 
    model.attributes.topics = _.pluck(topics, 'id'); 

    var ret = Backbone.Model.prototype.sync.call(this, method, model, options); 

    this.attributes.topics = topics; 

    return ret; 
}, 

но регулярно выходит из строя, оставив ключи в атрибутах вместо полных моделей & поэтому сбой.

функция Анализировать (слегка перефразировать):

parse : function(response) { 
    response.topics = _.map(response.topics, function(item) { 
    return app.topics.getByPK(item); 
    } 
    return response; 
} 
+0

Как выглядит ваша функция 'parse'? – kalley

+0

Я добавил его (или, по крайней мере, соответствующую часть) выше. – futuraprime

ответ

1

Что бы я сделал бы что-то более вдоль этих линий:

parse : function(response) { 
    this.topics = _.map(response.topics, function(item) { 
    return app.topics.getByPK(item); 
    } 
    return response; 
} 

который держит ваш массив идентификаторов неповрежденными во все времена, и вы имеют доступ с помощью this.topics вместо this.get('topics') или this.attributes.topics

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