2014-09-01 82 views
0

我对Ember很新,所以希望我只是在做一些愚蠢的事情,但我一直在遇到很多随机问题,数据显示不正确,现在我在Ember Debugger中看到我的数据不存在,直到我打到特定的模型数据端点。举例来说,我有一个模板来显示所有的产品,这里的路线:Ember DjangoRESTAdapter数据未加载

App.ProductsRoute = Ember.Route.extend({ 
    model: function() { 
     return this.store.find('product'); 
    } 
}); 

控制器:

App.ProductsController = Ember.ArrayController.extend({ 
    itemController: 'product' 
}); 

模板:

<script type="text/x-handlebars" data-template-name="products"> 
    <div class="row"> 
     {{#each}} 
      {{name}} 
     {{/each}} 
    </div> 
</script> 

击中端点 '/产品'如果我去'/ products/1',我可以在视图(和Ember调试器)中看到产品数据,然后如果我回到'/ products'那个特定产品的数据(但没有其他数据)正确显示。所以我对我做错了什么感到困惑。正如标题所暗示的,我使用的是DjangoRESTAdapter如果这有助于缩小东西下来,这里是我的app.js以及提前任何帮助

window.App = Ember.Application.create({}); 
window.api_location = 'http://localhost:8000/api'; 


App.ApplicationAdapter = DS.DjangoRESTAdapter.extend({ 
    host: api_location, 
    pathForType: function(type) { 
     return Ember.String.underscore(type); 
    } 
}); 
App.ApplicationSerializer = DS.DjangoRESTSerializer.extend({ 
}); 

App.Store = DS.Store.extend(); 

感谢,让我知道,如果其他代码段会有所帮助。

回答

0

好的,我终于明白了这一点:这是一个分页问题。我没有意识到我们为我们的Django REST API设置了分页,所以它不是返回一个对象列表,而是返回一个结果对象,并将产品列表隐藏在“结果”属性中。所以直到我能说服其他开发者关闭分页我可以修改我的所有查询:

this.store.find('product', {page_size:0}); 

覆盖我们的默认页面大小。

编辑:我也尝试修改服务器端的json响应,而不是使用djangorestadapter与此库:https://github.com/ngenworks/rest_framework_ember。希望这可以节省一些人的一些挖掘...