让我们想象一个简单的应用程序:用户管理。在主视图中,我们有一个网格中的用户列表;选择用户将启用“编辑”按钮。
我们抓取网格中的选定行(使用bind {selection : 'selectedUser';}
,然后将其传递到“修改”视图:Ext.create('viewName', {viewModel:{data : selectedUser}});
现在,用最简单的术语来说,'用户'模型有'名称'和'语言'。编辑表单将包含“名称”的文本框和语言的组合框。这个组合框绑定到一个商店,该商店包含所有带有'langId'和'langName'的语言作为字段:
xtype: 'combobox',
displayField: 'langName',
valueField: 'langId',
bind: {
store: '{allLangs}',
value: '{allLangs.langId}',
selection: '{selectedLang}'
}.
此外,“编辑”表单将使textBox绑定到selectedUser的名称:
bind : {value : '{selectedUser.Name}'}
现在,在afterRender
事件中,我将langName
中selecteUser
的值设置为组合框的选定值:
var displayValue = viewModel.get('selectedUser').get('langName');
langCombo.setValue(displayValue);
好的,现在你怎么知道当前的记录('selectedUser')是否改变了语言?
如果我正在检查model.dirty
属性是否仍为false
,即使该语言的值与最初的不同。
如何绑定组合框,以便在更改所选值时将模型的dirty
属性设置为true
?
显然,如果我正在修改name
,则模型将具有dirty
属性true
。
提前谢谢。