骨干历史无法启动

时间:2016-03-16 17:24:22

标签: backbone.js history

我是Backbone的新手,这让我发疯: 我正在使用骨干和木偶。 以下是一些代码示例:

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中找到'/'路由并触发相关的函数......我错了吗? 为什么这不起作用?????

事先,谢谢

1 个答案:

答案 0 :(得分:0)

发现它了! 正如我在评论中所说,这是一个部署错误。错误是npm安装上的一个糟糕的package.json文件。 前端开发人员提示:当您正在制作一个npm软件包来安装和部署Marionette项目时,请务必首先包含Backbone,并使用明确的版本...仅包括Marionette将导致npm安装Backbone两次(在项目根目录和木偶模块中),这是一个很大麻烦的来源......