Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 使用Meteor的背栅格_Backbone.js_Meteor_Backgrid - Fatal编程技术网

Backbone.js 使用Meteor的背栅格

Backbone.js 使用Meteor的背栅格,backbone.js,meteor,backgrid,Backbone.js,Meteor,Backgrid,如何将背栅格与Meteor集成?我正在使用meteor软件包productiveme:meteor backgrid,它使用最新的backgrid版本,但没有在meteor中使用的文档。我的两个主要问题是: 问题1 如何将Meteor/MongoDB集合或游标转换为主干集合以填充表?发布/订阅功能正确,可以在Backgrid之外成功访问数据 问题2 既然Backgrid是通过javascript启动的,而不是模板情况,那么我是以最快的方式来实现的吗 Template.customers.onRe

如何将背栅格与Meteor集成?我正在使用meteor软件包productiveme:meteor backgrid,它使用最新的backgrid版本,但没有在meteor中使用的文档。我的两个主要问题是:

问题1

如何将Meteor/MongoDB集合或游标转换为主干集合以填充表?发布/订阅功能正确,可以在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,如下所示:

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);

但这张桌子不是被动的。我还在学习Meteor,所以如果有人能就我做错了什么给出一两条建议,那就太棒了。

试试客户。查找{'project':project_id}。取而代之的是fetch。find返回一个光标,而不是一个文档数组。不,似乎不会改变结果。我已经用错误更新了问题。我认为它必须是主干实例,但我对主干不太熟悉。抱歉,.fetch确实有帮助,这不是全部问题。