ExtJS ViewModel setData()仅在数据不同时起作用
我有两个组合:第二个组合在表格上,取决于第一个组合。为此,将第二个值绑定到ViewModel数据特性。我制作了一个按钮来重置表单,并用第一个组合的值重新分配第二个组合的值(可能是更改) 问题是当我执行以下操作时:我更改第一个组合的值。当我第一次单击按钮时,它会工作(第二个组合被更改)。但是当我第二次单击时(两个组合的值相同),第二个组合被清空。如果第二个组合的值与第一个组合的值相同,则似乎不起作用。我做错了什么ExtJS ViewModel setData()仅在数据不同时起作用,extjs,combobox,binding,viewmodel,Extjs,Combobox,Binding,Viewmodel,我有两个组合:第二个组合在表格上,取决于第一个组合。为此,将第二个值绑定到ViewModel数据特性。我制作了一个按钮来重置表单,并用第一个组合的值重新分配第二个组合的值(可能是更改) 问题是当我执行以下操作时:我更改第一个组合的值。当我第一次单击按钮时,它会工作(第二个组合被更改)。但是当我第二次单击时(两个组合的值相同),第二个组合被清空。如果第二个组合的值与第一个组合的值相同,则似乎不起作用。我做错了什么 这里是当第一个组合的值与第二个组合的值相对应时,viewmodel不会更改,这是合乎
这里是当第一个组合的值与第二个组合的值相对应时,viewmodel不会更改,这是合乎逻辑的。我们不需要额外的手术。因此,该值不会在第二个组合框中被替换,它只进行
重置
要强制更新模型,必须使用notify
方法通知她
你可以在我的脸上看到这种行为
当值匹配且不匹配时,请查看调用堆栈。试试看,我希望它会有所帮助。 使用组件查询选择器直接在组合框中设置值
// The data store containing the list of states
var states = Ext.create('Ext.data.Store', {
fields: ['abbr', 'name'],
data : [
{"abbr":"AL", "name":"Alabama"},
{"abbr":"AK", "name":"Alaska"},
{"abbr":"AZ", "name":"Arizona"}
]
});
var viewmodel = Ext.create('Ext.app.ViewModel', {
data: {
state: 'AL'
}
});
var refCombo = Ext.create('Ext.form.field.ComboBox', {
store: states,
queryMode: 'local',
itemId: 'refCombo',
displayField: 'name',
valueField: 'abbr',
editable: false,
value: 'AL',
renderTo: Ext.getBody()
});
Ext.create('Ext.form.Panel', {
renderTo: Ext.getBody(),
viewModel: viewmodel,
items: [{
xtype: 'combo',
store: states,
queryMode: 'local',
itemId: 'refCombo2',
displayField: 'name',
valueField: 'abbr',
editable: false,
bind: {
value: '{state}'
}
}, {
xtype: 'button',
text: 'CLICK',
handler: function(button) {
button.up('form').getForm().reset();
viewmodel.setData({'state': refCombo.getValue()})
let refCombo2 = Ext.ComponentQuery.query('#refCombo2')[0];
refCombo2.setValue( refCombo.getValue());
}
}]
});
谢谢你的提问和提琴。非常感谢!我不知道
notify()
方法。我有,因为我认为notify()
应该在reset()
之后,但在setValue()
之前。如果不行,那就不行了。当然。起初我是这样做的,但忘了保存它。我在修小提琴