在网址中没有哈希的路线回家... backbone.js?

时间:2013-12-17 23:37:30

标签: javascript backbone.js hash

我不是在谈论PushState我不认为。我正在将一个新模型保存到我的localStorage集合中。主页上有一个操作路由到新视图,该视图具有序列化字段的表单,并创建一个使用create函数添加到localStorage的对象。

我在代码中注释掉了router.navigate以进行测试,看看我的视图是否可以通过在事件触发后手动删除哈希(#)来正确呈现(确实如此)。

router.navigate确实成功路由回家,但留下了尾随哈希(#)。我认为哈希导致了一个问题,有没有办法在没有哈希的情况下返回路由。或者,如果哈希不允许我重新渲染,我是否需要重新考虑一些代码?

save: function(e) {
    var playerObject = $(e.currentTarget).serializeObject();
    var playersCollection = new PlayersCollection();
    playersCollection.fetch({
        success: function(player) {
            player.create(playerObject);
            //router.navigate('', {trigger: true});
        }
    });
    return false;
}

1 个答案:

答案 0 :(得分:1)

检查source,您会看到navigate调用函数_updateHash。它总是添加前导“#”:

_updateHash: function(location, fragment, replace) {
  if (replace) {
    var href = location.href.replace(/(javascript:|#).*$/, '');
    location.replace(href + '#' + fragment);
  } else {
    location.hash = '#' + fragment;
  }
}

所以我没有看到“犹太教”的方式来做到这一点。我想你可以修改你的Backbone.js源代码(当片段为空时排除哈希值,或者向navigate添加一个排除它的选项)。