我有两个主干视图。一个是主视图,另一个是将在主视图中使用的视图。我正在为各种观点制作单独的模块。我有主视图加载并从路由器运行良好。以下是我的两个观点:
主要观点:
define([
'jquery',
'backbone',
'metros/docsMetro'
],
function($, Backbone, docsMetro) {
//Main Dashboard View
var Dashboard = Backbone.View.extend({
el: $('#mainContent'),
events: {
},
initialize: function() {
console.log('test');
//Validate User Here most likely. Each of the main view's for each app should probably call the same validation function
},
render: function (){
console.log('testing render');
}
});
// Return the Main Dashboard View
return new Dashboard;
正在加载的'metros / docsMetro'文件需要在顶部。我可以看到这个视图正在加载并正在通过init运行。
define([
'jquery',
'backbone'
],
function($, Backbone) {
//Docs Metro View
var docsMetro = Backbone.View.extend({
el: $('.docs'),
events: {},
initialize: function() {
console.log('docs Metro');
},
render: function (){
console.log('redering docs');
}
});
// Return the View
return new docsMetro;
});
我的问题是在主视图中'docsMetro'变量应该是返回的docsMetro视图返回null。
我缺少什么,似乎所有设置都正确?
答案 0 :(得分:0)
你可以尝试设置模块的路径是相对的吗?
而不是'metros/docsMetro'
做'./metros/docsMetro'
(假设metros文件夹与您需要metros / docsMetro的模块文件位于同一级别)
还有一些针对您的代码的其他提示和修复。
模块应该返回构造函数而不是实例,并且应该在初始化程序中为需要它们的视图实例化它们。
jQuery和Backbone不会放弃对全局注册其命名空间的支持,因此您不需要每次都将它们传递给依赖项数组。如果您在加载路由器和主视图之前需要在boostrap中使用它们就足够了,这将负责加载应用程序的其余部分