簡體   English   中英

Ember JS搜索嵌套路由

[英]Ember js search nested routes

我正在嘗試在嵌套路線內進行搜索,尤其是共享模型。

這是我的代碼示例

產品和搜索返回一個json

路由器

Market.Router.map ->
    @resource 'products'
    @resource 'search', { path: "products/search" }
    @resource 'product', { path: "products/:product_id" }

我要實現的其余適配器api URL是:

http://api.url:3000 / v1 / products / search?search_terms = “繩子”

我在標題菜單控制器中進行了搜索操作

如何在嵌套路線中查找記錄?

Market.HeaderMenuController = Ember.ArrayController.extend({
    searchText: null,
    actions: {
        searchResults: function(){
             this.store.find('product', 'search?search_terms='+this.searchText);
             this.store.find('search', { "search_terms":this.searchText });
        }
    }
});

我收到以下錯誤-

錯誤:斷言失敗:您必須在傳遞給push的對象中包含Market.Product的id

未捕獲的錯誤:斷言失敗:錯誤:斷言失敗:您必須在傳遞給push的對象中包含Market.Product的id

您看到的錯誤是由this.store.find方法返回的JSON引起的。 Ember-data希望所有模型對象都具有指定的id屬性。 如果檢查從API端點返回的JSON,則可能會發現該對象上沒有id屬性。

確保您要返回的JSON定義了id屬性(在每個“產品”對象上),並且錯誤應得到解決。

這是我的臨時方法,可能還有更好的解決方案。

為了獲得用於搜索的嵌套資源,您可以執行以下操作。

api端點為

http://api.url:3000 / v1 / products / search?search_terms = “繩子”

我為搜索路由創建了一個自定義適配器

Market.SearchAdapter = Market.ApplicationAdapter.extend(
  namespace: "v1/products"
)

用於搜索的自定義復數,並避免使用“搜索”端點

Ember.Inflector.inflector.rules.uncountable['search'] = true;
inflector = Ember.Inflector.inflector;
inflector.irregular('search', 'searches');

現在您可以運行商店查找以進行搜索

this.store.find('search', { 'search_terms': this.searchText });

與上一個端點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM