我有一個場景,其中列出產品在頁面中並允許用戶僅在模式窗口中編輯產品的屬性。Emberjs:防止在整個交易中更改傳播
當用戶點擊產品並開始編輯產品的屬性時,更改會立即傳播到產品列表頁面中的產品以及直接或間接綁定到正在進行更改的屬性頁面的任何部分。不是所需的行爲。只有當用戶確認的變化即保存按鈕更改應該傳播點擊,提交事務和模態窗口關閉
transaction: APP.store.transaction(),
renderTemplate:function(controller, record) {
this.transaction.add(record);
// append the modal view
App.ModalView.create().append();
},
onSaveClick: function(record) {
this.transaction.commit();
this.transitionTo('products');
},
理想我需要指示灰燼,直到事務被提交到停止傳播在產品上的任何變化。我試圖用beginPropertyChanges和endPropertyChanges推遲通知任何相關的觀察者這樣說:
renderTemplate:function(controller, record) {
this.transaction.add(record);
record.beginPropertyChanges();
// append the modal view
App.ModelView().create().append();
},
onSaveClick: function(record) {
record.endPropertyChanges();
this.transaction.commit();
this.transitionTo('products');
},
這樣可以防止傳播到列表中的變化,但是成交不提交,該項目還是很髒,當模態窗口關閉了。
我很確定我沒有正確使用它。我需要一種方法來保持遠離商店的更改,只要該商品未被提交就會反映出其當前狀態
使用商品狀態isDirty無助於解決此問題,因爲使用該商品時,商品已完全從該清單,這是不可接受的。
{{#each item in controller}}
{{#unless item.isDirty}}
{{item.name}}
{{/unless}}
我的回答不清楚嗎?你最終解決了這個問題嗎? – albertjan