Ember.js Ember如何处理搜索结果子路由的路由
这是一个图片,说明了我的设计,并需要在余烬发展。我对如何在ember中处理路由和实现有点不知所措 为了解释这个简化的例子,假设我有一个搜索结果页面(结果从后端返回),在这里,正如您所期望的,搜索结果并不总是相同的。但是,当我单击其中一个搜索结果时,我需要能够以嵌套路由的形式打开产品页面 这会带来一些问题,因为稍后返回的用户可能不会获得相同的产品列表。我将如何处理路由,像这样的事情Ember.js Ember如何处理搜索结果子路由的路由,ember.js,ember-cli,Ember.js,Ember Cli,这是一个图片,说明了我的设计,并需要在余烬发展。我对如何在ember中处理路由和实现有点不知所措 为了解释这个简化的例子,假设我有一个搜索结果页面(结果从后端返回),在这里,正如您所期望的,搜索结果并不总是相同的。但是,当我单击其中一个搜索结果时,我需要能够以嵌套路由的形式打开产品页面 这会带来一些问题,因为稍后返回的用户可能不会获得相同的产品列表。我将如何处理路由,像这样的事情 Router.map(function() { this.resource('search', funct
Router.map(function() {
this.resource('search', function(){
this.route('product', {route: ':productID'}, function())
});
});
我也不知道如何在containerview、视图、组件等方面设置继承权
帮助?我认为您需要创建这样的路线
this.resource('products', function() {
this.resource('product',{path: '/:id'});
});
之后,您需要创建两个路由ProductsRoute和ProductRoute
App.ProductsRoute = Ember.Route.extend({
model: function() {
return this.get('store').find('product');
}
});
App.ProductRoute = Ember.Route.extend({
model: function(product) {
return this.get('store').find('product', product.id);
}
});
当您尝试打开页面/产品时,您将获得所有产品。如果您将使用RestAdapter,它将向您的restapi/产品发送请求
我认为您需要在ProductsController中创建操作来搜索产品:
App.ProductsController = Ember.ArrayController.extend({
actions: {
searchProducts: function() {
var queryText = this.get('queryText');
if (queryText) {
return this.get('store').filter('product', {query: queryText}, function(item) {
return true;
});
}
}
}
});
此操作使用/products?query=queryText向api发送请求
在产品模板中,创建搜索表单,并使用类似于搜索按钮的
{{{action'searchProduct'}}
。此外,在模板中,您需要显示该用途的所有产品{{{{模型中的每个项目}
,并创建指向每个产品用途的链接{{{链接到“产品”项目}
。我认为为您的搜索框创建组件是最佳做法。当您说稍后返回的人可能不会获得相同的产品列表时,您是指上图中的产品1、3、4、5和6吗?这些产品可能会改变?是的,将会有数千种不同的产品,以后使用相同的搜索查询可能会返回不同的结果。您可能会返回并看到产品26、101、32、17和5作为初始结果集。(这将是一个分页结果页面,可能包含1000个结果)