我对Ember很陌生,所以我希望我只是做一些愚蠢的事情,但我已经遇到了很多随机问题,数据显示不正常,我现在在Ember中看到了在我到达特定模型数据端点之前,我的数据不存在的调试器。例如,我有一个模板来显示所有产品,这里是路线:
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>
点击端点&#39; / products&#39;最初没有显示任何内容,但如果我去&#39; / products / 1&#39;我可以在视图中(以及在Ember调试器中)看到产品数据,然后如果我导航回&#39; / products&#39;特定产品的数据(但没有其他数据)正确显示。因此,我对自己做错了什么非常困惑。正如标题所示,我使用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 :(得分:0)
好吧,我终于明白了:这是一个分页的问题。我不知道我们为Django REST Api设置了分页,所以它不是返回一个对象列表,而是返回一个结果对象,产品列表隐藏在'results'属性中。因此,除非我能说服其他开发人员关闭分页,否则我可以修改所有查询:
this.store.find('product', {page_size:0});
覆盖我们的默认页面大小。
编辑:我也在尝试修改服务器端的json响应,而不是在这个库中使用djangorestadapter:https://github.com/ngenworks/rest_framework_ember。希望这可以节省一些人挖掘......