![](/img/trans.png)
[英]Ember-data - “Attempted to handle event `deleteRecord` on *record* while in state root.deleted.saved.”
[英]deleteRecord not getting called in ember-data
我正在为Web SQL存储制作一个适配器,以在Cordova应用程序中使用。 到目前为止,一切都进行得很顺利,除了出于某种原因而根本没有调用deleteRecord方法。 这是我的代码的摘录:
DS.CordovaStorageAdapter = DS.Adapter.extend({
// Other methods...
deleteRecord: function(store, type, record) {
console.info('Deleting!');
var adapter = this;
var qr = new QueryRapper({id: record.get('id')}).tableName(this.tableName(type));
var query = qr.deleteQuery();
console.info(query);
function deleteSuccess(tx, results) {
adapter.didDeleteRecord(store,type,record);
}
return this.db.transaction(
function(tx) { tx.executeSql(query, [], deleteSuccess); },
function(err) { this.dbError(query, err, type, record); }
);
},
// Support methods...
});
这是我的茉莉花测试:
describe('EmberCordovaStorageAdapter', function() {
var m;
beforeEach(function() {
waitForDbInit();
runs(function() {
m = App.TestModel.createRecord({
string: 'String!',
number: 1234,
date: new Date(),
boolean: true
});
m.save();
waitForReady();
});
});
// Other tests...
it('deletes a record', function() {
waitForReady();
runs(function() { console.info('Deleting in test!'); m.deleteRecord(); waitForDeleted(); });
runs(function() { expect(m.get('isDeleted')).toBe(true); });
});
function waitForDeleted(model) {
model = model || m;
waitForMessage(model, 'rootState.deleted.committed');
}
function waitForReady(model) {
model = model || m;
waitForMessage(model, 'rootState.loaded.saved');
}
function waitForMessage(model, msg) {
waitsFor(function() {
console.info(msg, model.get('stateManager.currentPath'));
return model.get('stateManager.currentPath') == msg;
}, 'model message: ' + msg, 1500);
}
});
我在JS控制台中看到消息“正在删除测试!”。 但没有显示“正在删除!”消息。 github仓库可以在这里找到: https : //github.com/eltiare/ember-cordova-storage
我没有编写自定义适配器的经验,但是快速浏览一下您看到的是调用deleteRecord
但是没有看到commit
的调用
为了使ember-data实际上尝试删除记录,您需要调用commit。 要提交defaultTransaction,您可以执行以下操作:
m.get('store').commit();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.