Javascript Ember js搜索嵌套路由
我试图在嵌套路由中进行搜索,特别是在共享模型的路由中 下面是我的代码示例 Products和Search返回一个json 路由器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如下所示:
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 });