Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ember js搜索嵌套路由_Javascript_Search_Ember.js_Nested Routes - Fatal编程技术网

Javascript Ember js搜索嵌套路由

Javascript Ember js搜索嵌套路由,javascript,search,ember.js,nested-routes,Javascript,Search,Ember.js,Nested Routes,我试图在嵌套路由中进行搜索,特别是在共享模型的路由中 下面是我的代码示例 Products和Search返回一个json 路由器 Market.Router.map -> @resource 'products' @resource 'search', { path: "products/search" } @resource 'product', { path: "products/:product_id" } 我试图实现的rest适配器api url如下所示:

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

下面是我的代码示例

Products和Search返回一个json

路由器

Market.Router.map ->
    @resource 'products'
    @resource 'search', { path: "products/search" }
    @resource 'product', { path: "products/:product_id" }
我试图实现的rest适配器api url如下所示:

“绳索”

我在标题菜单控制器中有一个用于搜索的操作

如何在嵌套路由中查找记录

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 });
        }
    }
});
我得到以下错误-

错误:断言失败:您必须在传递给推送的对象中包含Market.Product的
id

未捕获错误:断言失败:错误:断言失败:您必须在传递给推送的对象中包含Market.Product的
id


您看到的错误是由
this.store.find
方法返回的JSON引起的。余烬数据要求所有模型对象都指定了
id
属性。如果检查API端点返回的JSON,您可能会发现对象上没有
id
属性


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

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

为了实现用于搜索的嵌套资源,可以执行以下操作

api端点为

“绳索”

我为搜索路由创建了一个自定义适配器

Market.SearchAdapter = Market.ApplicationAdapter.extend(
  namespace: "v1/products"
)
一个用于搜索的自定义复数形式,并避免使用“搜索”端点

现在,您可以运行商店查找以进行搜索

this.store.find('search', { 'search_terms': this.searchText });
使用上一个端点

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