ExtJS 5:初始 ViewModel 数据未触发公式

ExtJS 5: Initial ViewModel data not firing formula

我有一个包含一些初始数据的 ViewModel...此初始数据基于我创建的全局变量。在 ViewModel 中,我有一个公式可以根据全局变量的数据集执行一些逻辑。有趣的是,这个公式不会在创建 ViewModel 时触发。我假设这是因为 Something.Test 属性 不存在,所以如果 属性 不存在,ViewModel 内部有一些智能不会触发该方法。

如果 属性 不存在,我该如何启动公式?我知道我可以寻找 Something 检查它是否有 属性 Test,但我很好奇为什么这个例子不起作用。这是 example:

Ext.application({
    name : 'Fiddle',

    launch : function() {
        // Define global var Something
        Ext.define('Something', {
            singleton: true
        });
        Ext.define('MyViewModel', {
            extend: 'Ext.app.ViewModel',
            alias: 'viewmodel.myView',
            data: {
                Something: window.Something
            },
            formulas: {
                testSomething: function(getter) {
                    console.log('here', getter('Something.Test'));
                    return getter('Something.Test');
                },
                myTitle: function(getter) {
                    return 'My Title';
                }
            }
        });
        Ext.define('MyView', {
            extend: 'Ext.panel.Panel',
            bind: {
                title: '{myTitle}'
            },
            viewModel: {
                type: 'myView'
            }
        });
        var view = Ext.create('MyView', {
            renderTo: Ext.getBody()
        });
        // This will fire the ViewModel formula
        //view.getViewModel().set('Something', window.Something);
        console.log(Something, window.Something)
    }
});

当 Something.Test 不可用时,您可以锻炼一些逻辑来处理,例如:

data: {
    Something: window.Something && window.Something.Test || {Test: null}
},
formulas: {
    testSomething: function(get) {
        var val = get('Something.Test');
        console.log('Test');
        return val;
    },
    myTitle: function(getter) {
        return 'My Title';
    }
}