ember-data:Parent-Child资源中的继承

时间:2014-10-17 19:36:31

标签: ember.js ember-data

我们说这是我的路由器设置 -

router.js:

App.Router.map(function(){
     this.resource('photos', function(){
        this.resource('photo', {path: '/:photo_id'}, function(){
            //this.route('edit');
        });
     });
    });

photo.js:

App.Photo = DS.Model.extend({
 path: DS.attr('string'),
 resolution: DS.attr('string'),
 author: DS.belongsTo('user'),
 dateTaken: DS.attr('date'),
 aperture: DS.attr('string'),
 focalLength: DS.attr('string'),
            .
            .
            .
 exposure: DS.attr('string')

});

photosRoute.js:

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

photos.hbs:

<div class="container">
    <div class="row">
        {{#each photo in controller}}
            <div class="col-md-4">
                {{#link-to 'photo' photo}}{{photo.path}}{{/link-to}} <br />
                By: {{photo.author}} <br />

            </div>
        {{/each}}
    </div>
</div>

{{outlet}}

如上所示,我只在photos.hbs模板中使用{{photo.path}}和{{photo.author}}来显示所有照片的列表。但是,在这个设置中,调用/#/ photos会从我的django REST服务器获取每张照片的所有字段 - 我对此不感兴趣。有没有办法从照片模型中获取/#/照片和完整的照片模型中的几个字段,只有当我点击单张照片即/#/ photos / photo_id

我尝试了几件事:

  1. 创建了一个名为“photoDetail”的新子资源,用于扩展原始“照片”。理想情况下,这应该取代单一的“照片”。
  2. 我收集的内容{async:true}属性仅适用于在它们之间设置关系的模型之间的异步提取 - 但不适用于照片模型中的单个字段,如:'exposure','focalLength'。
  3. 非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

不,Ember-Data中没有部分加载的模型。 (事实上​​,我认为任何大型Ember-Data替代品都不具备该功能)。在大多数情况下,你的模型应该足够小,加载所有记录并不重要。当您启用GZIP时,您可能甚至不会注意到差异。如果您有一个特殊用例,其带宽非常有限,您可能只想编写自己的持久性库。 (您可能还可以修改Ember-Data或滥用其某些功能来完成相同的任务,但我建议您不要这样做。)