Ember DjangoRESTAdapter数据未加载

时间:2014-09-01 21:50:01

标签: django ember.js ember-data django-rest-framework

我对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();

提前感谢您提供任何帮助,如果其他代码段有用,请与我们联系。

1 个答案:

答案 0 :(得分:0)

好吧,我终于明白了:这是一个分页的问题。我不知道我们为Django REST Api设置了分页,所以它不是返回一个对象列表,而是返回一个结果对象,产品列表隐藏在'results'属性中。因此,除非我能说服其他开发人员关闭分页,否则我可以修改所有查询:

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

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

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