2015-04-10 2 views
0

Я рендеринг представления в моем магистральном приложении, когда коллекция сбрасывается,коллекции Backbone сброс и разобрать

initialize: function(options) { 
    this.options = options; 

    this.model.get('projects').fetch({ 
     data: { 
      organisation_id: this.model.get('id') 
     } 
    }, {reset:true}); 

    this.model.get('projects').on('reset', this.render, this); 
    this.model.get('projects').on('add', this.addNewProject, this); 
    this.model.get('projects').on('sort', this.addProjects, this); 
}, 

render: function() { 

     console.log(this.model.get('projects').state); 

     this.$el.html(this.template({ 
      is_owner: this.options.is_owner, 
      className: this.options.className, 
      pagination: this.model.get('projects').state 
     })); 

     this.addProjects(); 

     this.filter = new Pops.Views.OrganisationProjectsFilter({ 
      el:this.$el.find('.div-organisation-filter-wrapper'), 
      model : this.model, 
      collection: this.collection 
     }); 

     this.filter.render().el; 

     return this; 
    }, 

Как вы можете видеть, я бег выборки и сброс моей коллекции извлечённых данных. Моя проблема заключается в том, что с точки зрения я пытаюсь использовать некоторые значения, которые приходят с сервера, и кажется, что они равны нулю, вот моя коллекция,

App.Collections.PaginatedProjects= 

Backbone.PageableCollection.extend({ 

     url: App.API_ROOT + "/projects/paginated", 

     // Initial pagination states 
     state: { 
      pageSize: 2, 
      sortKey: "name", 
      order: 1, 
      totalRecords:null 
     }, 

     // You can remap the query parameters from `state` keys from 
     // the default to those your server supports 
     queryParams: { 
      totalPages: null, 
      totalRecords: null, 
      sortKey: "sort", 
     }, 

     // get the state from Github's search API result 
     parseState: function (resp, queryParams, state, options) { 
      this.state.totalRecords = resp.total; 
      this.state.totalPages = resp.total/this.state.pageSize; 
      this.state.lastPage = this.state.totalPages; 
     }, 

     // get the actual records 
     parseRecords: function (resp, options) { 
      return resp.data; 
     } 
}); 

Как вы можете видеть, что я бегу функции синтаксического анализа для получить и установить значения, если я консоль моей коллекции, я могу видеть правильные значения, но когда я пытаюсь использовать их в моем представлении, они являются нулевыми, я использую синтаксический анализ или сброс неправильно или, возможно, оба?

+0

показать шаблон и какой шаблон двигателя вы используете? –

ответ

0

Я думаю, это связано с тем, что когда вы визуализировали данные, они еще не прибыли. Попробуйте это:

this.model.get('projects').fetch({ 
    success: function(model,response) { 
     var data = //some of your answer 

    } 

}); 
0

Из того, что я понимаю, вы сделали

console.log(this.model.get('projects').state); 

и выяснили, что печать правильно, но затем используется в

this.template({ 
     is_owner: this.options.is_owner, 
     className: this.options.className, 
     pagination: this.model.get('projects').state 
    }) 

, то он не появляется ? Если это так, я не думаю, что это проблема в Backbone Collection. Я думаю, что это имеет какое-то отношение к тому, как вы получаете доступ к данным в своем шаблоне. Если вы используете рули, потому что это «состояние» переменная является JSON,

вам, возможно, с помощью

{{pagination.pageSize}} 

в файле HBS, чтобы распечатать его. У меня есть heizy память, что она не была поддержана некоторое время назад. попробуйте использовать

{{pagination/pageSize}} 

Кроме того, если этот фрагмент находится внутри {{#if}} или {{#each}} и т.д., в соответствии с документацией руля, вам, возможно, придется идти в сфере. использование

{{../pagination/pageSize}} or {{../../pagination/pageSize}} 

Я столкнулся с проблемой некоторое время назад и проделал большой поиск, чтобы узнать об этом. Надеюсь, это поможет