Используйте 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);
НО таблица не реагирует. Я все еще учу Метеор, так что было бы здорово, если бы кто-нибудь мог дать мне пару советов о том, что я делаю неправильно.