0

Backgrid оказываетBackgrid: рендер не вызывается

<table class="backgrid"></table> 

, но ничего больше. Точки останова в Backgrid: render() не достигнуты. Я новичок Blackbone, адаптирующий чей-то код, и поэтому не уверен, что именно должно произойти, но LayoutManager: render() вызывается ... он просто никогда не попадает в Backgrid ... Данные, которые я хочу отображать, и выглядят так, как будто они находятся в правильном формате ... но должны признать, что это сложно сказать, как только они были завернуты в коллекцию Backbone. Любые указатели на то, как отлаживать/почему рендер Backgrid не называется с благодарностью.

код ниже:

ListenView.js

define([ 
    'backbone', 
     'underscore', 
     'backgrid', 
    'app/models/PersonModel', 
    'app/collections/PersonCollection', 
    'app/views/PersonListView', 
    'hbs!app/templates/listen_template' 
    ], 
    function(
    Backbone, 
     _, 
     Backgrid, 
     Person, 
    PersonCollection, 
    PersonListView, 
    listenTemplate 
    ) { 

    App = window.App || {}; 
    var ListenView = Backbone.View.extend({ 
     template: listenTemplate, 
     initialize: function(params) { 
      //fetch the list of seen people 
      this.model.attributes.seenPeople.fetch({ 
       success: function(coll, resp) { 
        //console.log(coll); 
       } 
      }); 
     }, 
     afterRender: function() { 
      //initialise person view 
     console.log("creating Backgrid"); 
     this.seenPeopleView = new Backgrid.Grid({ 
         columns: [{ 
           name: "email", 
           label: "Email", 
           cell: "string" 
         },{ 
           name: "id", 
           label: "ID", 
           cell: "integer" 
         }, { 
           name: "title", 
           label: "Title", 
           cell: "string" } 
         ], 
         collection: this.model.attributes.seenPeople 
        }); 
      this.seenPeopleView.render(); 
       $('#seen-people-list').append(this.seenPeopleView.el); 
    } 

ответ

0

О методе успеха из выборки следует вызвать afterRender.

var self=this; 
this.model.attributes.seenPeople.fetch({ 
    success: function(coll, resp) { 
       self.afterRender(); 
      } 
}); 
+0

Спасибо @Alex Suleap и извините, только что видел это. Я только что пропустил его, но он все равно просто отображает пустой

... Какие-нибудь другие вещи, чтобы попробовать/отладить? В то же время у меня есть работа с bbGrid, предполагающая, что данные идут через штраф, но bbGrid гораздо менее полнофункциональный, чем Backgrid, поэтому мне бы хотелось, чтобы он работал. – theotherdy

0

Вместо создания backgrid экземпляра ввиду (this.seenPeopleView) создает экземпляр в качестве

var grid = new Backgrid.Grid({...<your columns and collection related code>..}); 

Затем визуализируйте сетку и прикрепить корень вашего HTML-документа, как

$('#seen-people-list').append(grid.render().el); 

Надежда он будет работать :)

+0

Спасибо @Mazzu, но все же просто пустой

и до сих пор не дошел до контрольных точек в backgrid.js render (строка 2849). Думаю, должна быть какая-то причина, почему это не называется. – theotherdy

+0

Любые ошибки в консоли? – Mazzu

+0

Также еще одна вещь, поместите свой код из «afterRender» в функцию «render». Потому что функция «render» вызывается при инициализации представления. – Mazzu

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

  • Нет связанных вопросов^_^