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

Я использую Backbone.js и Chaplin.js на CoffeeScript. У меня есть вызов. Как получить URL-параметры в перенаправленном представлении?

routes.coffee:

define ->     
  'use strict'
  (match) ->  
    match "account/albums/:page", "accounts#albums"


define [                                                      
  'chaplin'                                                   
  'collections/albums'                                        
  'views/form_view'                                           
  'views/inline/album'                                        
  'text!template/account/_form_image.html'                    
  'text!template/account/list_albums.html'                    
], (chaplin,                                                  
  Albums,                                                   
  FormView,                                                 
  AlbumView,                                                
  formTemplate,                                             
  template                                                  
) ->                                                          
  'use strict'                                                

  class AccountAlbums extends chaplin.CollectionView          
    collection: new Albums                                    
    itemView: AlbumView                                       
    template: template                                        
    containerMethod: 'html'                                   
    listSelector: '[data-placeholder=albums-tile]'            

    # TODO: understand how to get router arguments in the view
    initialize: (options) ->                                  
      super                                                   
      @on 'addedToDOM', => @collection.fetch()                
      # Need to something like this.                          
      # But I do not know how to get it.                      
      #@collection.fetch                                      
      #  data:                                                
      #    page: page                                         

1 ответ

Решение

Это старый вопрос, но для полноты вот ответ:

Ваш маршрут отправляет данные на albums метод внутри контроллера (accounts), который не показан в вашем коде выше. Этот метод должен выглядеть примерно так:

  albums: (params, route, options) ->
    @collection = new Albums()
    @view = new AccountAlbums collection: @collection
    @collection.fetch
      data:
        page: params.page

Представление не должно беспокоить извлечение данных, задача контроллера состоит в том, чтобы сообщить коллекции о получении данных. Тогда представление автоматически делает это.

Другие вопросы по тегам