我在RequireJS/Backbone.js應用程序中遇到HTML5 pushState的問題,我很確定我做錯了什麼,但我無法識別問題,我已經嘗試了幾個小時。pushState阻止來自工作的Backbone.js路線
前言:所有RequireJS依賴關係都位於其正確的文件夾中。
這是我的問題:我有一個基本的小設置 - 我使用的唯一骨幹組件是路由器。在默認的路由中,我在路由器中調用了一個'home'方法。這個方法只不過是提醒「測試」,並且它工作。
但是,一旦我將{pushState: true}
作爲參數添加到頂級app.js
文件中的Backbone.history.start()
,則不再調用'home'方法。
這些都是代碼,其中它正在發生的塊:
的index.html:
<!doctype html>
<html>
<head>
<title>Todo</title>
<script data-main="assets/js/app/app.js" src="assets/js/app/lib/require.js"></script>
</head>
<body>
<div id="main"></div>
</body>
</html>
app.js:
require.config({
baseUrl: 'assets/js/app',
paths: {
'underscore': 'lib/underscore',
'jquery': 'lib/jquery',
'backbone': 'lib/backbone',
'text': 'lib/text',
'handlebars': 'lib/handlebars',
'router': 'router/router'
},
shim: {
'underscore': {
exports: '_'
},
'backbone': {
deps: ['underscore', 'jquery'],
exports: 'Backbone'
}
}
});
require(['router', 'backbone'], function(Router, Backbone) {
var router = new Router();
Backbone.history.start({ pushState: true });
});
router.js:
define(['backbone'], function(Backbone) {
var Router = Backbone.Router.extend({
routes: {
'': 'home'
},
home: function() {
alert('test');
}
});
return Router;
});
我在做什麼錯了?這是不正確的,令人費解的方法?
我遇到了同樣的問題,試圖找出爲什麼我的骨幹學習項目的所有工作,但卓別林的基本樣板沒有。他們在構建路由器時選擇pushState:true。 找出爲什麼這是理想的可能是另外幾個小時的閱讀,但我真的很喜歡所有我的文件在文件中的簡單性:// url沒有任何服務器,特別是當我的代碼需要在諸如PhoneGap – kert 2013-07-04 01:28:51
還沒有在卓別林嘗試,但我相信你可以重寫,不是嗎? – razorbeard 2013-07-04 05:04:10
很容易完成,經過很長一段時間,通過代碼試圖弄清楚發生了什麼。那麼,至少是一次很好的學習練習。 – kert 2013-07-05 07:12:42