在ExtJS 6.02上,我想将ViewModel绑定到我的组件配置参数。
我试了试上面写的:https://stackoverflow.com/a/27284556,但它不起作用,没有绑定。
这将打印Null
而不是123
:
Ext.define('MyApp.viewmodel.Test', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.test',
data: {
serverPathData: ''
}
});
Ext.define('MyApp.view.TestFileField', {
extend: 'Ext.form.field.Text',
xtype: 'TestFileField',
viewModel: {
type: 'test'
},
config: {
serverPath: null
},
publishes: 'serverPath',
bind: {
serverPath: '{serverPathData}'
}
, initComponent: function() {
this.getViewModel().set('serverPathData', '123');
this.getViewModel().notify();
console.log(this.getServerPath());
this.callParent()
}
});
Ext.application({
name: 'MyApp',
launch: function() {
var testFileField = Ext.widget({
xtype: 'TestFileField',
renderTo: Ext.getBody()
});
}
});
使用testFileField.getViewModel().notify();
确实解决了这个例子中的问题,但在我的例子中却没有。
我有一个共享的视图模型。
1条答案
按热度按时间r1zk6ea11#
找到了一个解决方案,如果我在initComponent上调用
this.initBindable();
,它就可以工作:这个方法的问题是这个方法是私有的,并且已经在
beforeRender
和afterRender
上调用过,我不知道在initComponent
或constructor
上调用它是否会导致一些问题。