覆盖 destroy() 以删除与模型关联的照片不会删除模型本身
Overriding destroy() to remove photos associated with model doesn't remove model itself
在我的 Appcelerator Titanium Alloy 项目中,我试图覆盖 model.destroy()
以删除与模型关联的照片。我的代码可以很好地删除照片,但实际上并没有删除模型。我做错了什么?
_.extend(Model.prototype, {
destroy: function (options) {
// override default destroy method to also remove photos
console.log('destroying the model');
var model = this;
options = options ? _.clone(options) : {};
var photos = JSON.parse(model.get('photos'));
photos.forEach(function (photo) {
console.log("Deleting photo: " + photo);
var f = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, photo);
f.deleteFile();
});
model.trigger('destroy', model, model.collection, options);
}
});
我看到控制台日志语句,照片被删除了。但模型仍然存在。
有些我尝试过但没有成功的事情:
在我的控制器中,调用这两个:
model.destroy();
collection.remove(model);
// also collection.remove([model]);
我试过将它添加到我的扩展销毁函数中,但没有成功
...
f.deleteFile();
});
model.collection.remove(model);
// and model.collection.remove([model]);
model.trigger('destroy', model, model.collection, options);
通过以下,模型被破坏,但我的代码没有运行并且照片没有被删除。
_.extend(Model, {
...
只是一个猜测:options
是否有可能传递给您的扩展 destroy(...)
方法包括 { wait: true }
?如果是这样,模型将不会从集合中删除 until the server responds with a sync
event。
您覆盖 destroy(...)
的方式永远不会发生。
在你的模型对象而不是原型中尝试这个。
destroy: function (options) {
// override default destroy method to also remove photos
console.log('destroying the model');
var model = this;
options = options ? _.clone(options) : {};
var photos = JSON.parse(model.get('photos'));
photos.forEach(function (photo) {
console.log("Deleting photo: " + photo);
var f = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, photo);
f.deleteFile();
});
Backbone.Model.prototype.destroy.call(this);
}
在我的 Appcelerator Titanium Alloy 项目中,我试图覆盖 model.destroy()
以删除与模型关联的照片。我的代码可以很好地删除照片,但实际上并没有删除模型。我做错了什么?
_.extend(Model.prototype, {
destroy: function (options) {
// override default destroy method to also remove photos
console.log('destroying the model');
var model = this;
options = options ? _.clone(options) : {};
var photos = JSON.parse(model.get('photos'));
photos.forEach(function (photo) {
console.log("Deleting photo: " + photo);
var f = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, photo);
f.deleteFile();
});
model.trigger('destroy', model, model.collection, options);
}
});
我看到控制台日志语句,照片被删除了。但模型仍然存在。
有些我尝试过但没有成功的事情:
在我的控制器中,调用这两个:
model.destroy();
collection.remove(model);
// also collection.remove([model]);
我试过将它添加到我的扩展销毁函数中,但没有成功
...
f.deleteFile();
});
model.collection.remove(model);
// and model.collection.remove([model]);
model.trigger('destroy', model, model.collection, options);
通过以下,模型被破坏,但我的代码没有运行并且照片没有被删除。
_.extend(Model, {
...
只是一个猜测:options
是否有可能传递给您的扩展 destroy(...)
方法包括 { wait: true }
?如果是这样,模型将不会从集合中删除 until the server responds with a sync
event。
您覆盖 destroy(...)
的方式永远不会发生。
在你的模型对象而不是原型中尝试这个。
destroy: function (options) {
// override default destroy method to also remove photos
console.log('destroying the model');
var model = this;
options = options ? _.clone(options) : {};
var photos = JSON.parse(model.get('photos'));
photos.forEach(function (photo) {
console.log("Deleting photo: " + photo);
var f = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, photo);
f.deleteFile();
});
Backbone.Model.prototype.destroy.call(this);
}