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