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 如果基础数据更改为无效的。当您需要此条件绑定时,绑定到绑定到您的数据的公式。