【问题标题】:Backgrid.js error, "has no method 'omit'"?Backgrid.js 错误,“没有方法'省略'”?
【发布时间】:2013-06-26 19:02:34
【问题描述】:

我正在 Backbone 中开发一个应用程序并尝试实现 Backgrid.js,但我不断收到此错误:

Uncaught TypeError: Object function (a){return new m(a)} has no method 'omit'

这发生在 Backgrid.Grid 正在初始化并且似乎与列相关时。我检查了我的语法,甚至创建了一个简化的列数组,其中包含 1 个项目和一个简化的集合对象,其中一个属性与列匹配。

var columns = [{name: 'year', label: 'Year', cell: 'string'}];
var data = [{year: '1964'}, {year: '1965'}];

我的网格初始化为:

var grid = new Backgrid.Grid({ columns: columns, collection: data});

非常简单明了,但我仍然收到此错误。我还检查了我的 Backbone、Underscore 版本,它们与 Backgrid.js 下载中包含的版本相匹配。

还有其他人遇到过这个问题或有任何想法可能导致此问题吗?

【问题讨论】:

    标签: backbone.js underscore.js marionette backgrid


    【解决方案1】:

    只有one omit call in Backgrid:

    var passedThruOptions = _.omit(options, ["el", "id", "attributes",
                                             "className", "tagName", "events"]);
    

    _.omit 是去年九月在Underscore 1.4.0 中添加的:

    1.4.0 — 2012 年 9 月 27 日
    [...]

    • 添加了omit 函数,用于过滤对象以删除某些键。

    因此,推测您使用的 Backgrid 版本至少需要 Underscore 1.4.0,但您实际上使用的是旧版本的 Underscore。尝试将 Underscore(以及使用它的 Backbone)升级到最新版本。

    【讨论】:

    • 展示如何“彻底重新检查”您的源文件实际上需要真正彻底的重新检查。谢谢你叫醒我。这解决了这个问题。
    猜你喜欢
    • 2017-03-10
    • 1970-01-01
    • 2011-06-12
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多