Ember.js 余烬数据如何最好地处理非验证错误
处理来自余烬数据的403个错误的最佳方法是什么 我想知道处理非验证错误的最佳方法,例如,如果不允许用户执行操作,我有一段代码可能返回http 403。例如,我有以下代码:Ember.js 余烬数据如何最好地处理非验证错误,ember.js,ember-data,Ember.js,Ember Data,处理来自余烬数据的403个错误的最佳方法是什么 我想知道处理非验证错误的最佳方法,例如,如果不允许用户执行操作,我有一段代码可能返回http 403。例如,我有以下代码: contact.set 'something', 'something' transaction = @get('store').transaction() transaction.add(contact) contact.one 'becameInvalid', (result) => #display so
contact.set 'something', 'something'
transaction = @get('store').transaction()
transaction.add(contact)
contact.one 'becameInvalid', (result) =>
#display some error message
contact.one 'becameError', (result) =>
# code does not get here for some reason
transaction.rollback()
#display some error message
transaction.commit()
如果发生403错误,则不会调用上面的becameError
处理程序,并且对象的状态机将保持在rootState.error
状态,并且任何后续尝试在对象上设置属性的操作都将失败,原因是现在臭名昭著且令人恐惧的:
uncaught Error: Attempted to handle event `willSetProperty` on <Radium.Contact:ember2286:17> while in state rootState.error. Called with {reference: [object Object], store: <Radium.Store:ember3219>, name: name}
我的问题是,在状态机转换为rootState.error
后,如何使对象恢复到可用状态
didError: function(store, type, record, xhr) {
if (xhr.status === 422) {
var json = JSON.parse(xhr.responseText),
serializer = get(this, 'serializer'),
errors = serializer.extractValidationErrors(type, json);
store.recordWasInvalid(record, errors);
} else {
this._super.apply(this, arguments);
}
},