如果有可能像WPF转换器这样的东西,我想在绑定中使用。在ExtJs示例中,我看到三种类型:
这个例子很好用。
Ext.create('Ext.grid.Panel', {
store: store,
columns: [
{
xtype: 'widgetcolumn',
width: 50,
align: 'left',
widget: {
xtype: 'label',
bind: {
text: "{record.Text}",
}
}
},
]
});
但我需要更多。在飞行中改变somethig或计算。例如,根据来自记录的一些信息或者来自许多领域的信息和组合信息来改变标签的样式。我想要这样想:
Ext.create('Ext.grid.Panel', {
store: store,
columns: [
{
xtype: 'widgetcolumn',
width: 50,
align: 'left',
widget: {
xtype: 'label',
bind: {
text: "{calculateText(record)}",
style: {
color: "{calculateColor(record)}"
}
}
}
},
]
});
我读到有关公式的内容,我尝试了:
Ext.create('Ext.grid.Panel', {
store: store,
columns: [
{
xtype: 'widgetcolumn',
width: 50,
align: 'left',
widget: {
xtype: 'label',
viewModel:{
formulas: {
myText: function(get){
return get('record').Text + '$';
},
}
},
bind: {
text: "{myText}",
}
}
},
]
});
和这个
Ext.create('Ext.grid.Panel', {
store: store,
columns: [
{
xtype: 'widgetcolumn',
width: 50,
align: 'left',
widget: {
xtype: 'label',
viewModel:{
formulas: {
myText: {
bind: {
text: "{record.Text}",
},
get: function(data){
return data.text + '$';
},
},
}
},
bind: {
text: "{myText}",
}
}
},
]
});
但是当我尝试将我的ViewModel添加到当前上下文时 - 带有“record”的父ViewModel松散且无法正常工作。 我做错了什么以及如何做到这一点?
答案 0 :(得分:2)
我使用rowViewModel配置解决了我的问题。例如:
Ext.create('Ext.grid.Panel', {
store: store,
rowViewModel: {
formulas: {
myText: function(get){
return get('record.Text') + '$';
},
}
},
columns: [
{
xtype: 'widgetcolumn',
width: 50,
align: 'left',
widget: {
xtype: 'label',
bind: {
text: "{myText}",
}
}
},
]
});
答案 1 :(得分:1)
您可以将父视图模型作为viewmodel config的一部分传递。
viewModel:{
parent: this.getViewModel(),
formulas: {
myText: {
bind: {
text: "{record.Text}",
},
get: function(data){
return data.text + '$';
}
}
}
}