Я пытаюсь обновить приложение от Marionette 1. *> 2.4.2. Большая часть этого изменения переходит от модулей Marionette к использованию Browserify/Watchify с модулями стиля CommonJS.Маршрутизатор Marionette не запускает метод контроллера по маршруту
Я ударил блокпост, пытаясь запустить маршрутизатор/контроллер. Ошибка не возникает, но по какой-то причине мои маршруты не запускают мои методы контроллера.
doc_router.js:
var $ = require('jquery')
, _ = require("underscore")
, Backbone = require("backbone")
, Marionette = require("backbone.marionette")
, App = require("../../app.js")
var Router = Marionette.AppRouter.extend({
appRoutes: {
"docs": "listDocs"
}
});
// Map to controllers
var API = {
listDocs: function() {
console.log("listDocs") // Doesnt log to console
App.DocApp.List.Controller.listDocs();
}
};
// Update the URL when a controller event
// that requires it is triggered, then call
// appropriate controller via API.
App.on("docs:list", function() {
App.navigate("docs");
API.listDocs();
});
// Initialize router when app starts
App.on("before:start", function() {
console.log("History started? ", Backbone.History.started);
console.log("Initializing router...")
new Router({
controller: API
});
});
module.exports = Router;
app.js:
var $ = require('jquery')
, _ = require("underscore")
, Backbone = require("backbone")
, Marionette = require("backbone.marionette")
var App = new Marionette.Application();
App.addRegions({
mainRegion : "#main-region",
modalRegion : "#modal-region"
});
App.on("start", function() {
if (Backbone.history) {
console.log("Application starting...");
var fetchingCurrentUser = App.request("entities:current-user");
$.when(fetchingCurrentUser).done(function (current_user) {
App.currentUser = current_user;
console.log("Starting history...");
Backbone.history.start();
console.log("History started? ", Backbone.History.started);
});
}
});
module.exports = App
main.js:
var _ = require('underscore');
var App = require('./app.js');
App.Entities = _.extend({},
require("./entities/doc.js"),
require("./entities/user.js")
);
// DocsApp
App.DocsApp = {
"Router": require("./apps/doc/doc_router.js"),
"Reader": {
"Controller": require("./apps/doc/reader/doc-reader_controller.js"),
"Views": require("./apps/doc/reader/doc-reader_views.js")
},
"List": {
"Controller": require("./apps/doc/list/doc-list_controller.js"),
"Views": require("./apps/doc/list/doc-list_views.js")
}
};
App.start();
Судя по моим бревнами консоли это не кажется, как я m запускать Backbone.history перед созданием маршрутизатора. На самом деле вытащить мои волосы на этом ... Любая помощь приветствуется.
Редактировать
Использование Backbone.Router появляется на работу (ниже). Почему не работает Marionette.AppRouter?
var Router = Backbone.Router.extend({
routes: {
"": "listDocs",
"docs": "listDocs",
"docs/:doc_id" : "readDoc",
"docs/:doc_id/edit" : "editDoc"
},
listDocs: function() {
console.log("listDocs") // Logs to console
// App.DocApp.List.Controller.listDocs();
}
});
«У AppRouter, по-видимому, есть проблемы с Browserify», есть ли у вас информация об этом? – YoannM
У меня такая же проблема, и кажется, что маршруты противоречат маршрутам Express. Мое приложение правильно работало над моим приложением Tomcat. сервер. Но с тех пор, как я переключился на Экспресс, все маршруты перестали выполняться. Также он работал при использовании Backbone router. – Alexus