2015-04-01 122 views
1

我試圖實現的:用戶去發佈/ 3 /編輯。這裏表單綁定到模型,所以它已經填寫完畢。並在頂部Ember js與關係克隆記錄

You are editing the post {{model.title}} 

如果用戶更改標題它動態變化。我不想要這種行爲。如果用戶已經點擊了「保存」按鈕(並且服務器端的所有內容都正確),我想將更改應用到記錄中。

我的想法:

  1. 克隆記錄
  2. 結合克隆記錄形式
  3. 後,點擊「保存」的克隆(或修改)記錄的屬性應用到原始記錄。

問題

  • 這是這樣做的正確方法?
  • 有沒有像record.clone()這樣的東西,可以深度複製記錄與它的關係
  • 有沒有辦法應用更改,如originalRecord.apply(clonedRecord)

回答

0

假設你正在使用灰燼數據:

更簡單的方法可能是使用setupController鉤在您的文章編輯路線:

// routes/posts/edit.js 
export default Ember.Route.extend({ 
    setupController: function (controller, model) { 
    this._super(controller, model); 
    this.controller.set('staticTitle', model.get('title')); 
    } 
}); 
在你的模板

則:

{{staticTitle}} 

然後當您提交表單時,成功保存後將靜態標題重置爲新值:

// controllers/posts/edit.js 
. 
. 
. 
actions: { 
    savePost: function() { 
    var controller = this; 
    var post = this.get('model'); 
    function onSuccess(savedPost) { 
     controller.set('staticTitle', savedPost.get('title'); 
     //transition somewhere 
    } 
    function onFailure() { 
     post.rollback() 
    } 
    post.save().then(onSuccess, onFailure); 
    } 
} 
+0

謝謝,但「標題」只是一個例子。想象一下模式下的編輯形式,以及模式下的「背景」中的帖子列表。偶爾你可以看到帖子改變的所有屬性。這就是爲什麼我需要更通用的方式來克隆記錄。要將它們逐一設置,可能會非常繁瑣,每個包含超過10個屬性的50個模型。 – user3568719 2015-04-01 12:43:09

+0

啊好的,那麼在這種情況下,我認爲你想https://github.com/yapplabs/ember-buffered-proxy – 2015-04-01 16:11:28

+0

看起來很有希望,我會看看它。謝謝 – user3568719 2015-04-01 17:46:05