Как чаплин отображает модель после выборки?, как представление узнает, что выборка завершена?

Я делаю пример проекта, основанного на 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
Другие вопросы по тегам