我在控制器中定义了queryParams,我需要添加Ember应用程序中未使用的其他查询参数,它可以有任何名称。这是一个分析的事情。这些查询参数事先不知道,因此我们无法在queryParams属性中定义这些分析值。现在发生的是Ember在触发queryParams和URL绑定后删除所有附加参数。
示例:
在控制器中:
queryParams: ['fin', 'ftw'],
fin: null,
ftw: null,
URL:
localhost:3000?fin=111&ftw=121&anatylicsvalue=1
当我更改fin或ftw的值时,删除了anatylicsvalue。我需要应用程序保留那一点字符串。
这样做的最佳方式是什么?
答案 0 :(得分:0)
您需要在控制器的analyticsvalue
数组中定义queryParams
,或者在路由器的queryParams
json对象中定义它是否将由控制器使用。因此,如果您将queryParams
声明为['fin', 'ftw', 'analyticsvalue']
,则会保留。
为了实现一个有点动态的查询参数(即使事先不知道参数的名称),我建议的唯一选择是使用命名查询参数并使用JSON.stringify
来放置查询具有该名称的参数。请查看以下twiddle。 index.js
路由将queryParams
定义为queryParams: ['fin', 'ftw', 'additionalParams']
,additionalParams
查询参数保存动态参数,因为它是一个可以保存任何动态子参数的JSON对象。看一下updateAdditionalParams
里面actions
它定义了动态属性和动态值,如你所见。
不幸的是,Ember不支持事先不知道的自定义查询参数。您可以使用我在旋转中说明的方法。希望这会有所帮助。
答案 1 :(得分:0)
不幸的是,Ember不支持事先不知道的自定义查询参数。
遗憾的是,没有"余下"能力,如果我理解你正确说的话。如果调用SPA时要求任何不理解的查询参数必须逐字传递到其所有传出URL上,那么SPA需要在路由期间将其自身刮掉,在Ember机制之外?我有这个权利吗?
随着控制器的消失,所有的查询参数支持都会在路由上结束吗?我们应该采取什么措施来防范未来"我们的设计呢?