2016-03-16 86 views
1

我在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中找到'/'路由並觸發相關函數...我錯了嗎? 爲什麼這不起作用?????

在此之前,謝謝

+0

你訪問什麼網址? –

+1

誰觸發'app.vent.on('ready'' thingy ..? –

+0

'ready'事件是由app.start()(木偶框架)觸發的,稍後在main.js.中觸發 而我訪問本地主機/。也許這是更多的部署錯誤。骨幹似乎被包括我的gulp-browserify腳本兩次。我完全失去了...... –

回答

0

找到了! 正如我在評論中所說,這是一個部署錯誤。錯誤是npm install上的一個錯誤的package.json文件。 向前開發者提示:當你製作一個npm包來安裝和部署一個Marionette項目時,一定要首先包含Backbone,並且包含一個明確的版本......只包括Marionette將導致npm安裝Backbone兩次(on項目根和木偶模塊),這是一個大麻煩的來源...