Backbone历史没有开始
Backbone history do not start
我是 Backbone 的新手,这让我抓狂:
我正在使用 backbone 和 Marionette。
这是开始的一些代码示例:
var Backbone = require('backbone'),
Marionette = require('backbone.marionette'),
FastClick = require('fastclick');
var MainModule = require('./modules/main'),
HomeModule = require('./modules/home');
var app = new Marionette.Application();
app.vent.on('ready', function(e) {
Backbone.history.start({
pushState: true, // Use HTML5 history if available
hashChange: false, // or refresh pages if it isnt supported natively
root: '/',
})
});
在我的 /module/home/index.js 中:
module.exports = function HomeModule(Module, App, Backbone, Marionette, $, _) {
// Register Sub modules
App.module('Home', LayoutModule);
App.module('Home', WallModule);
Module.Router = Marionette.AppRouter.extend({
appRoutes: {
'/': 'home',
'social-wall': 'socialwall'
}
});
var controller = {
home: function() {
App.mainRegion.show(new Module.Layout());
},
socialwall: function() {
controller.home();
App.mainRegion.currentView.scrollToSocialWall();
}
};
App.addInitializer(function() {
new Module.Router({ controller: controller });
});
};
问题是 Backbone.history.start 没有触发任何东西。如果我正确理解代码,history.start() 应该在 HomeModule 中找到 '/' 路由并触发相关函数......我错了吗?
为什么这不起作用?????
提前,谢谢
找到了!
正如我在评论中所说,这是一个部署错误。错误是 npm 安装上的错误 package.json 文件。
给前端开发者的提示:当你制作一个 npm 包来安装和部署一个 Marionette 项目时,一定要首先包含 Backbone,并且有一个明确的版本......只包含 [=15] =] 将导致 npm 安装 Backbone 两次(在项目根目录和 marionette 模块中),这是大麻烦的根源...
我是 Backbone 的新手,这让我抓狂: 我正在使用 backbone 和 Marionette。 这是开始的一些代码示例:
var Backbone = require('backbone'),
Marionette = require('backbone.marionette'),
FastClick = require('fastclick');
var MainModule = require('./modules/main'),
HomeModule = require('./modules/home');
var app = new Marionette.Application();
app.vent.on('ready', function(e) {
Backbone.history.start({
pushState: true, // Use HTML5 history if available
hashChange: false, // or refresh pages if it isnt supported natively
root: '/',
})
});
在我的 /module/home/index.js 中:
module.exports = function HomeModule(Module, App, Backbone, Marionette, $, _) {
// Register Sub modules
App.module('Home', LayoutModule);
App.module('Home', WallModule);
Module.Router = Marionette.AppRouter.extend({
appRoutes: {
'/': 'home',
'social-wall': 'socialwall'
}
});
var controller = {
home: function() {
App.mainRegion.show(new Module.Layout());
},
socialwall: function() {
controller.home();
App.mainRegion.currentView.scrollToSocialWall();
}
};
App.addInitializer(function() {
new Module.Router({ controller: controller });
});
};
问题是 Backbone.history.start 没有触发任何东西。如果我正确理解代码,history.start() 应该在 HomeModule 中找到 '/' 路由并触发相关函数......我错了吗? 为什么这不起作用?????
提前,谢谢
找到了! 正如我在评论中所说,这是一个部署错误。错误是 npm 安装上的错误 package.json 文件。 给前端开发者的提示:当你制作一个 npm 包来安装和部署一个 Marionette 项目时,一定要首先包含 Backbone,并且有一个明确的版本......只包含 [=15] =] 将导致 npm 安装 Backbone 两次(在项目根目录和 marionette 模块中),这是大麻烦的根源...