2017-03-17 67 views
0

甚至否定的回答我有以下功能:store.CreateRecord推記錄存儲從服務器

this.store.createRecord('user', params).save().then(()=>{ 
     this.set('responseModal', 'Utworzono użytkownika!'); 
    }) 

我的問題是:爲什麼灰燼推記錄從服務器響應之前存儲? 例如:我錯誤地填寫表單,並且我的服務器返回錯誤和狀態:400,但沒有它的id-key的記錄仍在存儲中。我試過這樣的:

.catch(()=>{ 
     user.unloadRecord(); 
    }); 

但它看起來不好,當記錄顯示​​並立即隱藏。只有在沒有外部庫的服務器響應之後,才能在存儲中創建記錄?我只想使用ember-data將客戶端連接到服務器。任何意見和建議,將不勝感激

回答

2

如果表單提交沒有成功,那麼我們會給他們另一個嘗試已經用戶提供的數據。所以我們需要在store中存儲數據。如果你導航到其他頁面或不想放棄舊數據的另一種嘗試,那麼你可以隨時使用rollbackAttributes

如果模型hasDirtyAttributes此功能將放棄任何未保存 變化。如果模型是新的,它將從商店中刪除。

+1

rollbackAttributes,這是我需要:)非常感謝 –

0

嘗試在商店上調用unloadRecord,並傳遞未正確保存的對象。

.catch(()=>{ 
    user.unloadRecord(); 
}); 

我認爲這應該工作:

//unloads the record from the store if save() fails. 
    //This prevents any invalid records from being pushed into the store and viewable to user. 
.catch(()=>{ 
    this.get('store').unloadRecord({userObjectWithNullId}); 
}); 

另一種方法是使用表單驗證。在表單正確之前,用戶將無法提交表單。這是docs

相關問題