尽管我使用已定义的语句在模块中需要它,但我无法访问我的“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/