Используйте Backgrid с Meteor

Как можно было бы интегрировать Backgrid с Meteor? Я использую пакет метеор productiveme:meteor-backgrid в которой используется последняя версия Backgrid, но нет документации для использования в метеоре. Вот два моих главных вопроса:

Вопрос 1

Как преобразовать коллекцию Meteor/MongoDB или курсор в коллекцию Backbone, чтобы заполнить таблицу? (функции публикации / подписки являются правильными, и данные могут быть успешно доступны за пределами Backgrid)

Вопрос 2

Поскольку Backgrid инициируется с помощью javascript, а не шаблонной ситуации, я делаю это самым "метеорным" способом?

Template.customers.onRendered(function() {

    var project_id = Session.get('current_project')._id;
    var allCustomers = Customers.find({'project': project_id}).fetch();

    var columns = [
        {
            name: 'name',
            label: 'Name',
            cell: 'string'
        },
    ];
    var grid = new Backgrid.Grid({
        columns: columns,
        collection: allCustomers,
    });

    $("#table-container").append(grid.render().el);
});

Вот ошибка с консоли:

TypeError: obj[implementation] is not a function
at _.each.Events.(anonymous function) [as listenTo] (http://mb-air.local:3000/packages/productiveme_backgrid.js?7cf0e8ad9ae9ed918329b72c89c983e50097c6f6:282:26)
at Backgrid.Body.Backbone.View.extend.initialize (http://mb-air.local:3000/packages/productiveme_backgrid.js?7cf0e8ad9ae9ed918329b72c89c983e50097c6f6:4014:10)

1 ответ

Что ж, я смог решить Вопрос № 1, настроив несколько фиктивных моделей и коллекций Backbone:

var allCustomers = Customers.find({'project': project_id}).fetch();

var MyModel = Backbone.Model.extend({
    defaults: {
        id: null,
        name: null,
    }
});

var MyCollection = Backbone.Collection.extend({
    model: MyModel,
    initialize: function(models, options) { }
});

var myCollections = new MyCollection(allCustomers);

var columns = [
    {
        name: 'name',
        label: 'Name',
        cell: 'string',
        editable: false,
    },
];
var grid = new Backgrid.Grid({
    columns: columns,
    collection: myCollections,
});

$("#table-container").append(grid.render().el);

НО таблица не реагирует. Я все еще учу Метеор, так что было бы здорово, если бы кто-нибудь мог дать мне пару советов о том, что я делаю неправильно.

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