如何将Ember.js中的对象控制器与只返回所有对象的API一起使用?

如何将Ember.js中的对象控制器与只返回所有对象的API一起使用?,ember.js,ember-data,Ember.js,Ember Data,我有一个两页的Ember.js应用程序,使用Ember数据包装一个简单的RESTful API。主页是一个产品列表,另一个页面是一个产品的产品详细信息页面。数据通过仅具有“索引”请求的API加载,/API/products 当通过主页导航站点时,上面的操作很好,但是我不确定如何最好地处理直接导航到产品详细信息页面。我需要ember数据来请求所有产品,并将这些产品保留在客户端,这样当用户浏览简单的站点时,就不会再向API请求产品了。但是,我的应用程序中的ProductIndexView和Produ

我有一个两页的Ember.js应用程序,使用Ember数据包装一个简单的RESTful API。主页是一个产品列表,另一个页面是一个产品的产品详细信息页面。数据通过仅具有“索引”请求的API加载,
/API/products

当通过主页导航站点时,上面的操作很好,但是我不确定如何最好地处理直接导航到产品详细信息页面。我需要ember数据来请求所有产品,并将这些产品保留在客户端,这样当用户浏览简单的站点时,就不会再向API请求产品了。但是,我的应用程序中的ProductIndexView和ProductIndexController最好只能看到一条记录


在Ember.js中有没有处理这个问题的好方法?我知道我可以向控制器添加一个computed属性,该属性过滤完整列表,然后将其传递到视图模板中。但是,我希望视图和控制器不知道完整列表。

您需要将所有路由嵌套在获取所有产品的资源中

大概是这样的:

App.Route.map(function() {
  this.resource('products', { path: '/' }, function() {
    this.route('index');
    this.resource('product', { path:'/:product_id'} );
  });
});

App.ProductsRoute = Ember.Route.extend({
  model: function() {
    return App.Product.find({});
  }
});

App.ProductsIndexRoute = Ember.Route.extend({
  model: function() {
    return this.modelFor('products');
  };
});
使用
products/index
模板显示所有产品

使用
产品
模板显示产品详细信息


注意
App.Product.find({})中包含的
{}
I。这将强制执行余烬数据以返回承诺。这是必要的,以使
产品
路由在呼叫之前等待所有
产品
从服务器到达。

检查此项啊,谢谢!我曾经尝试过这样嵌套路由,但没有意识到可以强制
find
返回这样的承诺,或者返回承诺会迫使嵌套路由等待。我稍后会试一试。假设它能工作,这正是我想要的:)花了一点时间,然后意识到我是在4年级之前,而不是rc-1。效果很好。