2014-01-31 37 views
3

我有一個具有image屬性的模型。保存圖像時,我想不要將該屬性發布到端點。我想也許我可以.setimage屬性旁邊的所有變化然後保存。但保存仍然發佈一切。使用Ember-Data保存時排除模型屬性

另外,我的適配器支持PATCH,因此我可以成功保存模型的各個部分。

我的模型

App.Photo = DS.Model.extend({ 
    title: attr(), 
    description: attr(), 
    image: attr(), 
    authors: hasMany('author'), 
    imageURL: function() { 
    return document.location.origin + '/media/' + this.get('image'); 
    }.property('image'), 
    created: attr('date') 
}); 

我的控制器

App.PhotoController = Ember.ArrayController.extend({ 
    actions: { 
    save: function() { 
     this.get('model').save().then(function(success) { 
     self.transitionToRoute('photos').then(function() { 
     }); 
     }); 
    } 
    } 
}); 

回答

3

您可以覆蓋在SerializerserializeAttribute功能:

App.PhotoSerializer = DS.DjangoRESTSerializer.extend({ 
    serializeAttribute: function(record, json, key, attribute) { 
     if (attribute.name !== 'image') { 
      this._super(record, json, key, attribute); 
     } 
    } 
}); 
+0

這似乎並沒有產生和結果。我登錄屬性沒有任何結果。 –

+0

這應該有效;)我會用另一個建議編輯我的答案 –

+0

PhotoSerializer返回一個錯誤'找不到'0'的模型。這應該以模型命名,是否正確? –

13

我想,因爲這PR的灰燼有更好處理排除屬性的方式。

import DS from 'ember-data'; 

export default DS.JSONSerializer.extend({ 
    attrs: { 
    image: {serialize: false} 
    } 
}); 

如果你有多個屬性來排除上面的代碼看起來更乾淨。另外看看文件DS.JSONSerializer

+0

這應該是公認的答案,因爲公關已在一年前合併。 – ohcibi

+0

+查看關於[Customizing Serializers]的文章(https://guides.emberjs.com/v2.11.0/models/customizing-srializers/) –