У меня есть ViewModel, который содержит некоторые начальные данные ... эти исходные данные основаны на глобальной переменной, которую я создал. В ViewModel у меня есть формула, которая делает некоторую логику на основе набора данных из глобальной переменной. Интересно, что эта формула не срабатывает при создании ViewModel. Я предполагаю, что это связано с тем, что свойство Something.Test не существует, поэтому внутренности ViewModel имеют некоторые умения, чтобы не запускать метод, если это свойство не существует.ExtJS 5: Исходная форма представления 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» не определен, но «что-то» ... разве моя формула не срабатывает? Я предполагаю, что это не из-за того, что внутренние объекты ViewModel имеют некоторые умственные способности, чтобы сказать, что свойство не существует, поэтому оно не должно срабатывать. – incutonez
Nope - лента продолжается. Теперь ViewModel создается, но формула не будет оцениваться, пока ее не попросят. –