backbone.js 模块未以#url开始

irtuqstp  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(138)

我正在处理一个应用程序,其中我们使用了backbone和marionette js. Nw的问题是路由。虽然导航通过应用程序流,如果工作正常。在其中一个模块中,如果你刷新页面,那么backbne模块不会启动。这意味着如果你试图访问该模块的url**#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时,模块没有开始。

v64noz0r

v64noz0r1#

这个设置看起来像我使用的那个,按照我读过的 puppet 书。在我的任何模块,我想在开始时可用,我已经在我的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");
            }
         });
      }
   });

相关问题