模块没有开始使用#url

时间:2014-06-12 11:27:03

标签: jquery backbone.js marionette single-page-application backbone-routing

我正在开发一个应用程序,其中我们使用了主干和木偶js。 Nw问题在于路由。通过应用程序流导航如果工作正常。在其中一个模块中,如果刷新页面,则backbne模块不会启动。表示如果您尝试使用网址 #URL 访问该模块,则无法启动。

以下是该模块的代码

define(["app"], function (Splanner) {
    Splanner.module("RegistrationModule", function (Registration, Splanner, Backbone, Marionette, $, _) {
        Registration.startWithParent = false;

        Registration.onStart = function () {
            console.log('Module Start');
        };
        Registration.onStop = function () {
            console.log('Module Stop');
        };
    });

    Splanner.module("RegistrationRouter", function (RegistrationRouter, Splanner, Backbone, Marionette, $, _) {

        RegistrationRouter.Router = Marionette.AppRouter.extend({
            appRoutes: {
                "newvisitor/registration": "visitorRegistration"
            }
        });

        var executeAction = function (controllerAPI, arg) {
            Splanner.startModule("RegistrationModule");
            controllerAPI(arg);
        };

        var API = {
            visitorRegistration: function () {
                require(["modules/visitor/registration/RegistrationController"], function (RegistrationController) {
                    executeAction(RegistrationController.showVisitorRegistration);
                });
            }
        };

        Splanner.on("visitor:registration:show", function (myVisitor) {
            Splanner.navigate("newvisitor/registration");
            API.visitorRegistration(myVisitor);
        });
        Splanner.addInitializer(function () {
            new RegistrationRouter.Router({
                controller: API
            });
        });

    });
    return Splanner.RegistrationRouter;
});

现在,当我通过应用程序流程时,它无法正常工作,但是当我使用 #newvisitor / registration url时,模块无法启动。

1 个答案:

答案 0 :(得分:0)

这个设置看起来像我使用的那个,遵循我读过的牵线木偶书。在我的任何模块我想在开始时可用我已经在我的app.js文件中调用它在初始化后触发。不确定这对你是否会是一样的但是我在开始时就被抓住并且没有可用的模块

MyApp.on("initialize:after", function() {
      if (Backbone.history) {
         require([
            "apps/dashboard/dashboard_app",
            "apps/server/server_app",
            "apps/installations/installations_app",
            "apps/system_check/system_check_app",
            "apps/accounts/account_management_app",

         ], function() {
            Backbone.history.start();

            if (MyApp.getCurrentRoute() === "") {
               MyApp.trigger("dashboard:show");
            }
         });
      }
   });