【问题标题】:backgrid throwing TypeErrorbackgrid 抛出 TypeError
【发布时间】:2013-03-01 21:44:49
【问题描述】:

我在 backgrid 的第 1620 行收到此错误:

Uncaught TypeError: Cannot call method 'text' of null

这是我的代码,它模仿了这个例子:

var ConversionTag = Backbone.Model.extend({});
var ConversionTagCollection = Backbone.Collection.extend({
    model: ConversionTag,
    url: '/api/tags/conversion',
    parse: function(response, options) {
        return response.conversionTags;
    }
});

var tags = new ConversionTagCollection();

var init = function(parentSelector) {
    var columns = [
        { name: 'chanId', label: 'Channel', cell: 'integer' },
        { name: 'name', label: 'Description', cell: 'string' },
        { name: 'pageUrl', label: 'Conversion URL', cell: 'string' },
        { name: 'secureFl', label: 'Secure Tag', cell: 'integer' },
        { name: 'id', label: 'ID', cell: 'integer', editable: false }
    ];
    var grid = new Backgrid.Grid({
        columns: columns,
        collection: tags
    });
    var foo = grid.render().$el; // ERROR!
    $(parentSelector).append(foo);
    tags.fetch();
    window.ctags = tags;
    window.cgrid = grid;
};

错误发生在foo= 行,tags.fetch 永远不会被调用。

【问题讨论】:

  • 你真的不应该只用只有 1 个关注者的标签来标记东西。
  • 这是一个特定于背景的问题,但我也可以添加主干。
  • 您使用的是哪个 jquery 版本?如果您将 secureFl 列标签更改为纯文本会发生什么,例如:安全标签
  • @nemesv 版本 1.7.1
  • @nemesv secureFl 没用

标签: backbone.js backgrid


【解决方案1】:

那是因为您试图将 HTML 注入到标题中。 $.text() 在后台调用 document.createTextNode 并且它不接受 HTML。您必须将 Header 子类化,明确声明其用法in your column definition

【讨论】:

  • 将 secureFl 列更改为 { name: 'secureFl', label: 'Secure Tag', cell: 'integer' }, 并没有解决问题。
  • 看看你是否还能在 0.2.0 上重现这个。
猜你喜欢
  • 1970-01-01
  • 2011-10-03
  • 2016-11-18
  • 1970-01-01
  • 2021-10-07
  • 2018-08-28
  • 2014-10-05
  • 1970-01-01
  • 2023-03-14
相关资源
最近更新 更多