【问题标题】:Backbone Marionette and RequireJS骨干木偶和 RequireJS
【发布时间】:2015-02-19 19:09:50
【问题描述】:

我正在尝试使用 Backbone.Marionette 和 RequireJS 设置一个新应用程序。我正在跟随enzo's guide 设置我的路由器和控制器,但在尝试实例化控制器时出现以下错误-“未定义不是函数”。

require( ['marionette', './assets/js/router', './assets/js/routeController'], function (Marionette, Router, routeController)  {  

    var MyApp = new Backbone.Marionette.Application();

    var controller = new routeController({});

如果我将鼠标悬停在函数参数中的 routeController 上,则会显示为“未定义”。

我做错了什么?这让我发疯。

编辑:routeController文件如下-

define(["marionette"], function (Marionette) {

   var Controller = Backbone.Marionette.Controller.extend({
    initialize : function(options) {

     },
    start: function() {

    },

     home :  function () {
        alert('Hello, welcome home!');
    },
});

return Controller;

});

【问题讨论】:

  • 你的 routeController 文件是什么样的?
  • @ne8il 我已经用 routeController 代码更新了我的帖子,这与我链接的指南中列出的代码相同。
  • 如果您将 Marionette 定义为 AMD 模块,则无需执行 Backbone.Marionette,只需使用 Marionette.*
  • @KyleNeedham 不管我如何定义 Marionette,我仍然收到错误“无法读取未定义的属性 'Controller'。”

标签: backbone.js controller requirejs marionette router


【解决方案1】:

当您从 RequireJS 请求模块时收到 null 时,有两种典型的可能性:

1) 需要的模块没有返回任何东西

ControllerrouteController.js 中是非空的吗?在那里扔一个调试器来确保。

2) 某处存在循环依赖

在模块的某处创建循环依赖很容易。看起来情况并非如此,但如果 router.js 正在做一些时髦的事情,可能会发生这种情况。

【讨论】:

    猜你喜欢
    • 2014-05-17
    • 2012-07-15
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多