Backbone.js + require.js应用程序:不返回用require.js加载的模块视图

时间:2012-01-27 19:38:50

标签: javascript backbone.js requirejs

我有两个主干视图。一个是主视图,另一个是将在主视图中使用的视图。我正在为各种观点制作单独的模块。我有主视图加载并从路由器运行良好。以下是我的两个观点:

主要观点:

 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。

我缺少什么,似乎所有设置都正确?

1 个答案:

答案 0 :(得分:0)

你可以尝试设置模块的路径是相对的吗?

而不是'metros/docsMetro''./metros/docsMetro'(假设metros文件夹与您需要metros / docsMetro的模块文件位于同一级别)

还有一些针对您的代码的其他提示和修复。

模块应该返回构造函数而不是实例,并且应该在初始化程序中为需要它们的视图实例化它们。

jQuery和Backbone不会放弃对全局注册其命名空间的支持,因此您不需要每次都将它们传递给依赖项数组。如果您在加载路由器和主视图之前需要在boostrap中使用它们就足够了,这将负责加载应用程序的其余部分