javascript - 无法访问 Requirejs 模块内的另一个类

标签 javascript backbone.js coffeescript requirejs

尽管我使用已定义的语句在模块中需要它,但我无法访问我的“App”对象。您能解释一下为什么我的代码不起作用吗?

这是我的 main.js 文件:

require(['underscore', 'backbone', 'App'], function(_, Backbone, App) {

    window.App = new App();
    Backbone.history.start();
    return window.App.init();

});

这是我的 app.js 文件:

define(['underscore', 'backbone', 'Views/ApplicationView'], function(_, Backbone, ApplicationView) {
    'use strict';
    var App;
    return App = (function() {

        function App() {

            this.init = __bind(this.init, this);
        }

        App.prototype.init = function() {

            this.view = new ApplicationView();
       };

       return App;

    })();
});

最后是我的 applicationView.js

define(['underscore', 'backbone', 'views/AbstractView', 'App'], function(_, Backbone, AbstractView, App) {
    'use strict';
    var RegisterView;
    return RegisterView = (function(_super) {
        __extends(RegisterView, _super);

        function RegisterView() {
            this.init = __bind(this.init, this);
            return RegisterView.__super__.constructor.apply(this, arguments);
        }



        RegisterView.prototype.init = function() {

            RegisterView.__super__.init.apply(this, arguments);
            this.model = App.user; // APP IS UNDEFINED
        };

    })(AbstractView);
});

最佳答案

我在这段代码中看到的唯一问题是循环依赖。一般来说,您希望设计代码来避免它们。如果不能,则应修改上面的代码,以便分配 this.model 的行(在 RegisterView.prototype.init 中)如下所示:

this.model = require("App").user;

必须是这样,因为模块的工厂函数(给 define 的匿名函数)将获得的 App 必然是 undefined 因为当 RequireJS 加载此模块时,App 的模块尚未完成加载。像上面那样执行 require 调用会导致 RequireJS 在 App 模块加载完成后获取该值。

记录here .

关于javascript - 无法访问 Requirejs 模块内的另一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23909647/

相关文章:

javascript - Backbone.js 在集合中指定模型的目的是什么

javascript - Backbone::在 View 上使用 jQuery 插件

javascript - 获取 Backbone 模型实例的模型/类名称

coffeescript - 获得咖啡类的名称?

javascript - 教育用途的 CoffeeScript 与纯 JavaScript

javascript - 如何将用户定义的属性传递给可能尚不存在的Javascript对象?

javascript - 在 XSLT 中使用 javascript 加载 xml 文件

jquery - 如何使用 Require.js 配置库插件?

javascript - 推送到附加单引号的数组元素

javascript - 动态删除文本框