Backbone 错误视图不是构造函数

Backbone Error view is not a constructor

我尝试使用 Backbone 制作身份验证应用程序。

我的main.js。应用开始的地方:

require(['backbone', './views/AppView'], function (Backbone, AppView) {
    'use strict';

    var App = new AppView();
    App.render();
);

我之前用 requirejs 声明过我的库。 我的 AppView.js :

define (['backbone', 'Login', './home/HomeView', './login/LoginView'], function (Backbone, Login, HomeView, LoginView) {
'use strict';

var AppView = Backbone.View.extend({

    el : 'body',

    initialize : function () {
        console.log('init Appview');
        if (Login.isConnected()) {
            //Utilisateur connecté
            this.view = new HomeView();
        }
        else{
            //Utilisateur pas connecté
            this.view = new LoginView();
        }
    },

    render : function () {
        this.$el.html(this.view.render().$el);
        return this;
    }
});
return AppView;
});

这里我检查用户是否已连接。如果他是:AppView,如果他不是:LoginView。 目前一切正常,登录视图出现。

登录视图:

define(['backbone', 'underscore', 'jquery', 'requirejs-tpl!./../../../../resources/templates/login/LoginTemplate.html', 'Login', './../AppView'], function (Backbone, _, $, LoginTemplate, Login, AppView) {

'use strict';

var LoginView = Backbone.View.extend({

    initialize : function () {

    },

    render : function () {
        this.$el.html(LoginTemplate());
        return this;
    },

    events : {
        'click #btnConnect' : 'connect'
    },

    connect : function (event) {

        event.preventDefault();

        var login = $('#login').val();
        var password = $('#password').val();
        var ReponseLogin = Login.login(login, password);
        if(!ReponseLogin.connected){
            //Erreur
            $('#showErreur').html(ReponseLogin.erreur);
        }
        else{
            //Pas d'erreur, on affiche l'appli, AppView
            var App = new AppView();
            App.render();
        }
    }
});

return LoginView;

});

当我尝试声明要在 HomeView 上重新加载的新 AppView 时:"TypeError: AppView is not a constructor"。

有人可以帮助我吗?

感谢

您正在使用循环依赖 - AppView 需要 LoginView,LoginView 需要 AppView。当在 LoginView 中引用时,这会导致 AppView 为空。这里有一个更好的解释:http://requirejs.org/docs/api.html#circular

您可能应该重构您的设计以消除此循环引用。如果你觉得有必要,你可以在第二个模块(LoginView)中再次使用"require"并拉入AppView(如那个link所示)。但我强烈建议您重新考虑设计。