在Ember.js中的queryParam更新后附加查询参数

时间:2017-06-26 12:01:29

标签: ember.js query-parameters

我在控制器中定义了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。我需要应用程序保留那一点字符串。

这样做的最佳方式是什么?

2 个答案:

答案 0 :(得分:0)

您需要在控制器的analyticsvalue数组中定义queryParams,或者在路由器的queryParams json对象中定义它是否将由控制器使用。因此,如果您将queryParams声明为['fin', 'ftw', 'analyticsvalue'],则会保留。

为了实现一个有点动态的查询参数(即使事先不知道参数的名称),我建议的唯一选择是使用命名查询参数并使用JSON.stringify来放置查询具有该名称的参数。请查看以下twiddleindex.js路由将queryParams定义为queryParams: ['fin', 'ftw', 'additionalParams']additionalParams查询参数保存动态参数,因为它是一个可以保存任何动态子参数的JSON对象。看一下updateAdditionalParams里面actions它定义了动态属性和动态值,如你所见。

不幸的是,Ember不支持事先不知道的自定义查询参数。您可以使用我在旋转中说明的方法。希望这会有所帮助。

答案 1 :(得分:0)

  

不幸的是,Ember不支持事先不知道的自定义查询参数。

遗憾的是,没有"余下"能力,如果我理解你正确说的话。如果调用SPA时要求任何不理解的查询参数必须逐字传递到其所有传出URL上,那么SPA需要在路由期间将其自身刮掉,在Ember机制之外?我有这个权利吗?

随着控制器的消失,所有的查询参数支持都会在路由上结束吗?我们应该采取什么措施来防范未来"我们的设计呢?