0

backbone.js アプリケーションに問題があります。バックボーン ルーターでどの subviev をレンダリングするかを制御したいのですが、名前空間に問題があり続けています。「Uncaught ReferenceError: app is not defined」というエラーが表示され、成功しなかった他のすべてのソリューションを試しました。ルーターでビューを制御するためのより良い解決策があるかもしれませんが、他の解決策を 3 時間試しましたが、成功しませんでした。あなたが私を助けてくれることを願っています。

これが私のコードです:

(function($){    


var App = Backbone.View.extend({
    el: $('body'),

    initialize: function () {
        _.bindAll(this, 'render');
        this.mainApp = new LoginApp();
        this.render();
    },

    render: function(){
        $(this.el).append(this.mainApp.render().$el);
    },
    setmainApp: function(mApp) {
        this.mainApp = mApp;
    }
});

var LoginApp =Backbone.View.extend({
    initialize: function () {
        _.bindAll(this, 'render');
    },

    render: function() {
        $(this.el).append("<h1>Hello World</h1>");
        return this;    
    }
});

var RegisterApp =Backbone.View.extend({
    initialize: function () {
        _.bindAll(this, 'render');
    },

    render: function() {
        $(this.el).append("<h1>Hello World2</h1>");
        return this;    
    }
});


//Router
var AppRouter =Backbone.Router.extend({
    routes : {
        "login" : "login",
        "register": "register",
        '*path':  'defaultRoute'
    },
    login: function() {
        //Problem
        app.setmainApp(new LoginApp);
        app.render();
    },
    register: function() {
        app.setmainApp(new RegisterApp);
        app.render();
    },
    defaultRoute: function() {
        app.setmainApp(new LoginApp);
        app.render();
    }
});
var appRouter = new AppRouter;
Backbone.history.start();
app = new App();

})(jQuery);
4

1 に答える 1

1

順序を変更してみてください:

var appRouter = new AppRouter;
app = new App();
Backbone.history.start();
于 2013-10-03T13:00:01.660 に答える