如何处理在Ember.js应用中包含“/”的搜索查询?

3
我创建了一个小应用程序,它接受搜索查询并返回模拟内容。您可以在这里看到该应用程序:http://embersherpa.com/wip/search-example/app/#/search
当通过搜索输入查询时,它能够正确运行,但是通过url输入时却无法正常工作。 如何正确处理带有"/"的搜索查询,使其能够通过url输入?

1
你认为应该如何正确处理这样的查询? - subsub
这是一个好问题。我想,与通过搜索字段输入时一样。这可能吗? - Taras Mankovski
1个回答

1

您应该避免直接将关键词放入URL中,而是先使用 encodeURIComponent 进行转义,然后在您的模型钩子函数中使用 decodeURIComponent 进行解码。粗略的代码如下:

serialize : function(model){
  // model is the keyword in your case
  return {keyword: encodeURIComponent(model)};
},
model : function(params){
  var keyword = decodeURIComponent(params.keyword);
  // do what you need to do with the keyword
}

这仅影响关键字在路由之间传递的方式,这不是问题。 (我认为)问题在于路由器如何处理参数。 - Taras Mankovski
相信我,如果你将“/”作为普通字符插入到URL中,并查看控制台,则会看到Assertion failed: The URL '/search//' did match any routes in your application。因此,请进行适当的转义和取消转义操作,它就能正常工作了。 - mavilein
序列化方法在Ember 2.1中未被触发。 - Pavel Chuchuva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接