stDragon
@stDragon
front-end разработчик

Как задать дефолтный параметр второго уровня?

Есть моделька.
App.Models.Dialog = Backbone.Model.extend({
    defaults:{
        'author': {
            avatar: '/img/myAvatar.png'
        },
        'opponent': {
            avatar: '/img/myAvatar.png'
        }
    }
});

Если с сервера приходит автор, то дефолтный avatar не учитывается. Можно как-нибудь красиво решить и заставить брать дефолтный?
author: {
    id: 1,
    name: "admin@admin.ru"
},

в голову пришло только
initialize: function() {
        var tmp = _.clone(this.get('author'));
        if(!tmp.avatar){
            tmp.avatar = '/img/myAvatar.png';
            this.set('author', tmp);
        }
        tmp = _.clone(this.get('opponent'));
        if(!tmp.avatar){
            tmp.avatar = '/img/myAvatar.png';
            this.set('opponent', tmp);
        }
    }
  • Вопрос задан
  • 96 просмотров
Пригласить эксперта
Ответы на вопрос 2
bazilio91
@bazilio91
tochka.com, developer experience
https://github.com/powmedia/backbone-deep-model может помочь. Там при присвоении используется deep extend.
Ответ написан
Комментировать
Staltec
@Staltec
Node.js разработчик
Используй метод модели parse() для перехвата и адаптации данных приходящих с сервера.

Подробнее в официальной документации: Model-parse
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы