我不是在谈论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;
}
答案 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
添加一个排除它的选项)。