我触发Backbone的导航功能来更改事件触发后的URL。防止Backbone.history.navigate解码URL片段
代码
Backbone.history.navigate("?q=" + encodeURIComponent(searchQuery))
在我的情况下,searchQuery
就应该像这样缪勒,从而包含空格和Unicode字符。这就是为什么我必须用encodeURIComponent
编码为max + m%C3%BCller。
但是在Backbones导航功能中,我的searchQuery
正在解码回“maxmüller”并且像那样返回。
所以在最后的URL被改变成
myroot.com/?q=max穆勒
这不是一个有效的URL。相反,它应该是这样的:
myroot.com/?q=max+m%C3%BCller
至于我能想到的,也有来解决这个两种可能的途径:
1. changing/extending Backbone.history.navigate to return the encoded
fragment
2. recreating Backbone's navigate functionality to change the URL with plain Javascript or using any other library
但为什么它不是Backbone的默认行为?创建无效的URL没有任何意义。
最明智的事情虽然扩展核心是做的最好的事情,如你所说,我决定暂时使用普通的JavaScript,做这样的:窗口' .location.hash =“?q =”+ encodeURIComponent(searchQuery);'。 –
是的,这是有道理的:) –