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