Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.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
Ember.js Ember如何处理搜索结果子路由的路由_Ember.js_Ember Cli - Fatal编程技术网

Ember.js Ember如何处理搜索结果子路由的路由

Ember.js Ember如何处理搜索结果子路由的路由,ember.js,ember-cli,Ember.js,Ember Cli,这是一个图片,说明了我的设计,并需要在余烬发展。我对如何在ember中处理路由和实现有点不知所措 为了解释这个简化的例子,假设我有一个搜索结果页面(结果从后端返回),在这里,正如您所期望的,搜索结果并不总是相同的。但是,当我单击其中一个搜索结果时,我需要能够以嵌套路由的形式打开产品页面 这会带来一些问题,因为稍后返回的用户可能不会获得相同的产品列表。我将如何处理路由,像这样的事情 Router.map(function() { this.resource('search', funct

这是一个图片,说明了我的设计,并需要在余烬发展。我对如何在ember中处理路由和实现有点不知所措

为了解释这个简化的例子,假设我有一个搜索结果页面(结果从后端返回),在这里,正如您所期望的,搜索结果并不总是相同的。但是,当我单击其中一个搜索结果时,我需要能够以嵌套路由的形式打开产品页面

这会带来一些问题,因为稍后返回的用户可能不会获得相同的产品列表。我将如何处理路由,像这样的事情

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个结果)