javascript - ExtJS 5 : Initial ViewModel data not firing formula

标签 javascript extjs mvvm viewmodel extjs5

我有一个包含一些初始数据的 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';
    }
}

关于javascript - ExtJS 5 : Initial ViewModel data not firing formula,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34109645/

相关文章:

c# - C# Server.URLEncode 的 JavaScript 等价物是什么?

javascript - ExtJs: Tree: 如何直接滚动到特定元素?

c# - 代码契约和 MVVM

javascript - 展开循环,什么时候使用

javascript - 我怎样才能使文本区域内容中的外观值取决于所选值

javascript - CSS 显示属性问题

javascript - 如何使用 sencha touch 将 json 数据作为代理中的输入传递

extjs - extjs 数据 View 中的搜索字段

c# - 将命令绑定(bind)到代码隐藏中的 KeyBinding

ios - 在 Swift 的 MVVM 中处理 subview 中的事件