【问题标题】:Ember js search nested routesEmber js 搜索嵌套路由
【发布时间】:2014-12-19 17:33:06
【问题描述】:

我正在尝试在嵌套路由中进行搜索,特别是共享模型。

这是我的代码示例

产品和搜索返回一个 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

【问题讨论】:

    标签: javascript search ember.js nested-routes


    【解决方案1】:

    这是我的临时方法,可能有更好的解决方案。

    为了实现嵌套资源的搜索,你可以做如下操作。

    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 });
    

    使用上一个端点。

    【讨论】:

      【解决方案2】:

      您看到的错误是由您的 this.store.find 方法返回的 JSON 引起的。 Ember-data 期望所有模型对象都指定一个 id 属性。如果您检查从 API 端点返回的 JSON,您可能会发现对象上没有 id 属性。

      确保您返回的 JSON 定义了一个 id 属性(在每个“产品”对象上)并且应该解决错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-10
        • 1970-01-01
        • 2013-01-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多