【发布时间】:2016-06-10 16:08:30
【问题描述】:
app.js
module.exports = function () {
if (!window.__medicineManager) {
var Backbone = require('backbone');
var Marionette = require('backbone.marionette');
var MedicineManager = new Marionette.Application();
MedicineManager.addRegions({
mainRegion: "#main-region"
});
MedicineManager.navigate = function (route, options) {
options || (options = {});
Backbone.history.navigate(route, options);
};
MedicineManager.getCurrentRoute = function () {
return Backbone.history.fragment;
};
MedicineManager.on("start", function () {
if (Backbone.history) {
Backbone.history.start();
}
});
MedicineManager.start();
window.__medicineManager = MedicineManager;
}
return window.__medicineManager;
}();
medicine_app.js
var MedicineManager = require('app');
var Backbone = require('backbone');
var Marionette = require('backbone.marionette');
MedicineManager.module("MedicineApp", function (MedicineApp) {
MedicineApp.Router = Marionette.AppRouter.extend({
appRoutes: {
"": "showSearchOption",
"show/*id": "showMedicine"
}
});
var API = {
showSearchOption: function () {
console.log('show search option');
},
showMedicine: function (id) {
console.log('show ' + id);
}
};
MedicineManager.addInitializer(function () {
console.log('MedicineApp.Router initialised');
new MedicineApp.Router({
controller: API
});
});
});
我知道 Marionette 模块已被弃用,所以请忽略它,因为我仍在测试 Browserify。
问题是"": "showSearchOption" 路由没有被触发。
我的问题被提到Marionette.AppRouter as Backbone.Router
我不明白如何解决它?
编辑:
我认为 Marionette 在内部使用的 Backbone 实例与我在 require('backbone') 时得到的不同。
对这个问题有什么建议吗?
【问题讨论】:
-
你确定 Backbone.history.start() 被调用了吗?
-
Marionette module is deprecated是什么意思?
标签: javascript backbone.js npm marionette browserify