Javascript Sencha Touch MVC模型在保存之前
如何为Sencha Touch MVC模型调用beforeSave方法(即每次添加、更新和/或保存模型记录时触发的方法)?(假设Sencha Touch 1.x) 据我所知,没有任何事件告诉您数据将被更改,但尚未更改。 但是,更改后事件称为“datachanged”。如果您只需要知道您的数据已更改(而不是在更改之前),请为此“datachanged”事件添加一个侦听器,并放弃我编写的其余内容 但是,如果您确实需要“beforedatachanged”事件,请继续阅读: 通过使用Ext.override覆盖Sencha行为并在数据实际更改之前触发新事件,您可以实现自己的事件(并将其称为“beforedatachanged”) 这听起来可能很难,但事实并非如此: 首先看看这个: 转到并找到“onBatchComplete”,您将看到它触发“datachanged”事件:Javascript Sencha Touch MVC模型在保存之前,javascript,sencha-touch,Javascript,Sencha Touch,如何为Sencha Touch MVC模型调用beforeSave方法(即每次添加、更新和/或保存模型记录时触发的方法)?(假设Sencha Touch 1.x) 据我所知,没有任何事件告诉您数据将被更改,但尚未更改。 但是,更改后事件称为“datachanged”。如果您只需要知道您的数据已更改(而不是在更改之前),请为此“datachanged”事件添加一个侦听器,并放弃我编写的其余内容 但是,如果您确实需要“beforedatachanged”事件,请继续阅读: 通过使用Ext.overr
/**
* @private
* Attached as the 'complete' event listener to a proxy's Batch object. Iterates over the batch operations
* and updates the Store's internal data MixedCollection.
*/
onBatchComplete: function(batch, operation) {
var operations = batch.operations,
length = operations.length,
i;
this.suspendEvents();
for (i = 0; i < length; i++) {
this.onProxyWrite(operations[i]);
}
this.resumeEvents();
this.fireEvent('datachanged', this);
},
/**
*@私人
*作为“完整”事件侦听器附加到代理的批处理对象。迭代批处理操作
*并更新商店的内部数据混合收集。
*/
onBatchComplete:函数(批处理、操作){
var操作=批处理操作,
长度=操作。长度,
我
这个。吊杆();
对于(i=0;i
在“this.suspendEvents();”之前,您必须触发自己的自定义事件,因为在此之后,操作将被执行
要覆盖此选项,请在应用程序中编写类似的内容:
Ext.override(Ext.data.AbstractStore,
{
onBatchComplete: function(batch, operation)
{
var operations = batch.operations,
length = operations.length,
i;
this.fireEvent('beforedatachanged', this);
this.suspendEvents();
for (i = 0; i < length; i++) {
this.onProxyWrite(operations[i]);
}
this.resumeEvents();
this.fireEvent('datachanged', this);
},
});
Ext.override(Ext.data.AbstractStore,
{
onBatchComplete:函数(批处理、操作)
{
var操作=批处理操作,
长度=操作。长度,
我
this.firevent('beforedatachanged',this);
这个。吊杆();
对于(i=0;i
然后,您需要在模型代码中侦听beforedatachanged事件,这样您就一切就绪了