Backbone.Marionette.Controller抛出“Uncaught TypeError:r.apply不是函数”

时间:2016-10-19 21:11:50

标签: javascript backbone.js marionette uncaught-typeerror

我想运行我的Backbone.Marionette应用程序,但是当我尝试这样做时,它会突破我的代码行( controller.js ):

var appController = new MyController();

MyController的样子:

var MyController = new Backbone.Marionette.Controller.extend({
    showItems: function(options) {
        this.collection = new MyCollection();
        var self = this;
        this.collection.fetch({
            success: function(options) {
                console.log("SUCCESS");
                var myView = new MyCollectionView({
                    collection: self.collection
                });
                options.region.show(myView);
            },
            error: function(options) {
                console.log("FAILED");
            }
        });
    }
});

,它显示以下错误消息:

Uncaught TypeError: r.apply is not a function

如果我看到此错误的详细信息,则会从 backbone-min.js (第1884行)中删除此代码的else

// The constructor function for the new subclass is either defined by you
// (the "constructor" property in your `extend` definition), or defaulted
// by us to simply call the parent constructor.
if (protoProps && _.has(protoProps, 'constructor')) {
  child = protoProps.constructor;
} else {
  child = function(){ return parent.apply(this, arguments); };
}

然后,看看这个,您可以看到错误从我的代码开始,如下图所示。

我尝试将代码行更改为:

var appController = MyController();

它显示了相同的错误,但现在的区别是它只在backbone.js代码(同一行)中断,这真的很奇怪。

2 个答案:

答案 0 :(得分:0)

  

感谢Emile,我按照你的指示,但现在抛出了   在backbone.marionette.js代码中出现以下错误:

backbone.marionette.js:19 
Uncaught TypeError: Cannot use 'in' operator to search for 'default' in undefined

错误很容易发现,因为它指向Marionette code中的以下行:

Radio = 'default' in Radio ? Radio['default'] : Radio;

这意味着Radio未定义。

来自Marionette download page

  Marionette需要

Backbone.Radio

花点时间阅读有关如何开始使用每个lib的文档。它真的会节省你的时间。

答案 1 :(得分:0)

从模态中删除新的关键字,仅在实例化模态时使用new

var MyController = Backbone.Marionette.Controller.extend({
var appController = new MyController();