ExtJS:防止 ViewModel 绑定在 null 上更新
ExtJS: Prevent ViewModel bindings update on null
是否可以阻止 ViewModel 在值为 null 时更新其绑定?或者更一般地说,任何其他特定值。
不太确定你真正想要什么,这绝对不是最好的解决方案,但可能会给你一些想法:
const viewModel = new Ext.app.ViewModel({
formulas: {
notifyOnlyWhenNotNull: {
bind: '{name}',
get: function(value) {
if (value) {
this.storedNotNullValue = value;
}
return value?value:this.storedNotNullValue;
}
}
},
});
viewModel.bind('{notifyOnlyWhenNotNull}', function(v) {
console.log('Changed to',v);
});
viewModel.set('name','Something not null');
viewModel.notify();
viewModel.set('name',null);
viewModel.notify();
console.log('We still have the last non-null value', viewModel.get('notifyOnlyWhenNotNull'));
console.log('But we also have the real "null" value', viewModel.get('name'));
这里的想法非常简单,将绑定数据包装在一个公式中,自定义 getter 可以决定您是否已经存储了一些实际值,并且 return 如果基础数据更改为无效的。当您需要此条件绑定时,绑定到绑定到您的数据的公式。
是否可以阻止 ViewModel 在值为 null 时更新其绑定?或者更一般地说,任何其他特定值。
不太确定你真正想要什么,这绝对不是最好的解决方案,但可能会给你一些想法:
const viewModel = new Ext.app.ViewModel({
formulas: {
notifyOnlyWhenNotNull: {
bind: '{name}',
get: function(value) {
if (value) {
this.storedNotNullValue = value;
}
return value?value:this.storedNotNullValue;
}
}
},
});
viewModel.bind('{notifyOnlyWhenNotNull}', function(v) {
console.log('Changed to',v);
});
viewModel.set('name','Something not null');
viewModel.notify();
viewModel.set('name',null);
viewModel.notify();
console.log('We still have the last non-null value', viewModel.get('notifyOnlyWhenNotNull'));
console.log('But we also have the real "null" value', viewModel.get('name'));
这里的想法非常简单,将绑定数据包装在一个公式中,自定义 getter 可以决定您是否已经存储了一些实际值,并且 return 如果基础数据更改为无效的。当您需要此条件绑定时,绑定到绑定到您的数据的公式。