Ember查询参数不支持将对象设置为QueryParam。它只支持键值对。根据documentation:
查询参数是可选的键值对,出现在右边的 的?在一个URL中。例如,以下网址有两个查询 参数,可以排序和网页,用各自的值ASC和2:
如果你正在寻找绑定两个id
和email
属性的查询字符串丘壑,你会必须明确指定:
App.ArticlesController = Ember.ArrayController.extend({
queryParams: ['id, email'],
id: null,
email: null
});
如果你真的要绑定的id
和email
直接到query
对象,你可以设置一个观察或计算财产(取决于你的目标),其观察到任何的改变id
或email
属性,然后更新本地有的其他对象。
如果您想简化此设置,可以考虑使用Controller Mixin来定义queryParams中的一组公共属性以及相应的数组。然后你可以做类似的事情:
App.ArticlesController = Ember.ArrayController.extend(MyQueryParamsMixin, {
queryParams: myQueryParams
// The other properties would be set explicitly from your Mixin
// Technically, you don't even need to declare the properties since they'll get bound anyway
// thanks to queryParams, but it's good practice to let readers of your Mixin know which properties
// are in use.
});
也许,那么告诉我,你如何在Ember中制作复杂的远程过滤器?而这仍然是元。 只是,与queryParams你会在地址栏查询写这样的 '''?过滤器[牧师] [名] =伊万和过滤器[人] [年龄] = 666''' 并发送一个请求'''store.findQuery'''。很简单! – 2014-10-09 09:39:51
可能有其他方法可以做到这一点,但我总是只绑定一个queryParam属性,然后在我的控制器中,我将这些属性翻译成更复杂的东西。例如。 '?filters [person] [name] = Ivan'成为'?name = Ivan',然后在我的控制器中我知道“Ivan”将被绑定到'name'属性。然后,我可以使用观察者或计算属性来观察'name',如果它发生变化,则更新其他对象。这种灵活性意味着“键 - 值对”限制根本不是一个限制,因为您可以随时观察任何已更改的值。 – 2014-10-09 14:54:17