2012-10-21 2 views
3

Есть ли способ, построенный более сложной модели в Backbone.js, позвольте мне объяснить на примере:Backbone.js Построение сложных моделей (модели в модель)

Это объект Json Session:

{ 
    id: "17", 
    notes: "", 
    start: "2012-10-18T15:57:41.511Z", 
    end: "2012-10-18T19:22:31.875Z", 
    sessionType: { 
     id: "1", 
     name: "Life Style", 
    } 
} 

При извлечении объекта сеанса с сервера я хотел бы иметь свойство SessionType Backbone.Model, чтобы добавить некоторую бизнес-логику вокруг этого объекта.

До сих пор я могу только получить сеанс объекта с фиктивным типом SessionType, я не могу добавить в него никакой логики, потому что он не принадлежит к какой-либо базовой модели.

ответ

3

Вы можете попробовать это:

window.SessionType = Backbone.Model.extend({ 

    initialize:function() { 
    }, 

}); 

Тогда в вашей модели сеанса, есть метод:

window.Session = Backbone.Model.extend({ 

    initialize:function() { 
    }, 

    getSessionType() { 
     return new SessionType(this.get('sessionType')); 
    } 

}); 

Теперь вы можете вызвать getSessionType() метод, который возвращает модель, которая может иметь свою логику.

2

@Amulya на 100% правильное. Однако, если вам нужна модель сеанса без вызова метода getSessionType(), я бы посмотрел на использование встроенного метода синтаксического анализа и создание вашей модели.

Если ваша модель сеанса связана с вашей моделью, я бы посмотрел на использование Backbone Relational. Поскольку Backbone не обрабатывает отношения, плагин, указанный выше, отлично справляется с заполнением пробела без слишком большого ручного труда.

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