queryParams中的嵌套对象

时间:2014-10-08 18:48:29

标签: ember.js

问题:如何传递

类型的对象
query: {
  id: bla,
  email: bla-bla-bla
}

在queryParams?

像这样的简单方法

App.ArticlesController = Ember.ArrayController.extend({
  queryParams: ['query'],
  query: {
    id: bla,
    email: bla-bla-bla
  }
});

当然不起作用:)

P.S。抱歉英语不好:)

1 个答案:

答案 0 :(得分:1)

Ember查询参数不支持将对象设置为QueryParam。它只支持键值对。根据{{​​3}}:

  

查询参数是右侧显示的可选键值对   的?在URL中。例如,以下URL有两个查询   参数,排序和页面,具有相应的值ASC和2:

如果您希望将idemail属性绑定到查询字符串val,则必须明确指定它:

App.ArticlesController = Ember.ArrayController.extend({
  queryParams: ['id, email'],
  id: null,
  email: null
});

如果您确实要将idemail直接绑定到query对象,则可以设置观察者或计算属性(取决于您的目标),以观察到任何idemail属性,然后更新您在本地拥有的其他对象。

如果要简化此设置,可以考虑使用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.
});