骨干路由不能刷新

时间:2012-11-14 10:11:34

标签: backbone.js underscore.js

我把这个演示放在一起

http://demo.stg.brightonconsulting.net.au/templates/tests/backboneJQMProducts/

目前只有顶级链接'产品json pull'有效。如果你点击它就会被带到一个新页面(http://demo.stg.brightonconsulting.net.au/templates/tests/backboneJQMProducts/index.html#products/productList)

到此页面的路由工作正常,但是当您刷新页面时,它不显示该页面只显示空白页面? (它刷新正常 - 做一个cntr + f5,你会看到)

有没有人有这个/有没有人知道修复是什么?

我已尝试编辑此代码

define(['jquery','underscore', 'backbone','router'],
function($, _, Backbone,Router) {

var init=function(){
    //create backbone router
    //location.hash = '';
    var router=new Router();
    Backbone.history.start();
};

return{
    initialize:init
}
});

基于recomendations。

我正在使用require.js将app放在一起,这是从main.js调用的,由require

实例化
require.config({

paths: {
    jquery:     'vendor/jqm/jquery_1.7_min',
    jqm:     'vendor/jqm/jquery.mobile-1.1.0', 
    underscore: 'vendor/underscore/underscore_amd',
    backbone:   'vendor/backbone/backbone_amd',
    text:       'vendor/require/text',
    plugin:    'plugin',
    templates:  '../templates',
    views:    '../views',
    models:       '../models'
}

});


define(['app','jqm-config'], function(app) {
$(document).ready(function() {
  console.log("DOM IS READY");// Handler for .ready() called.
});    
app.initialize();
});

感谢dan

2 个答案:

答案 0 :(得分:6)

在使用RequireJS设置BackboneJS后,我刚刚遇到过类似的事情。

我在路由器代码中调用Backbone.history.start();为了解决这个问题,我把这个调用移到我在主require()函数中实例化我的视图之后。

希望能有所帮助。

答案 1 :(得分:2)

根据您想要实现的行为,您可以做两件事:

在初始化路由之前重置哈希值。

location.hash = ''
var router=new Router();
Backbone.history.start();

初始化路由后,您可以导航到该哈希标记。

var router=new Router();
Backbone.history.start();
router.navigate(location.hash, true)