Как чаплин отображает модель после выборки?, как представление узнает, что выборка завершена?
Я делаю пример проекта, основанного на Chaplin-шаблоне, и работает отлично, но я не могу понять, как рендеринг представления после завершения выборки, например, с Backbone, который можно использовать при изменении события, или с обратным вызовом в метод fetch, но как с этим справляются chaplinjs?, используется ли изменение события из Backbone? какой класс Chaplinjs связывает событие? как дела с переплетом?
class CampaignController extends Chaplin.Controller
title: 'Campaign'
index: (params) ->
campaign = new Campaign()
@view = new CartView model: campaign
class CartView extends View
template: template
template = null
container: '#cart'
autoRender: true
className: 'cart'
initialize: ->
super
render: ->
super
class Campaign extends Model
initialize: (attributes, options) ->
super
@urlRoot = "http://localhost/store/js/test-data/cart.json"
@fetch()
2 ответа
Решение
Где вы делаете @view = new CartView model: campaign
вы назначаете campaign
объект как модель для представления. Класс ChaplinJS View автоматически выполняет следующие действия:
if (target === 'model' || target === 'collection') {
prop = this[target];
if (prop) {
this.listenTo(prop, eventName, callback);
}
}
Это должно ответить на ваш вопрос
Я бы поставил вашу логику выборки на контроллер:
class Campaign extends Model
urlRoot = "http://localhost/store/js/test-data/cart.json"
Campaign = require 'models/Campaign'
class CampaignController extends Chaplin.Controller
title: 'Campaign'
index: (params) ->
campaign = new Campaign()
campaign.fetch
success:
@view = new CartView model: campaign
error:
console.error('sorry dude')
class CartView extends View
template: template
template = null
container: '#cart'
autoRender: true
className: 'cart'
initialize: ->
super
render: ->
super