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