sencha modern getcmp ext javascript extjs data-binding

javascript - getcmp - modern extjs



ExtJS 5 vincula el cuadro combinado a la selección (0)

Imaginemos una aplicación simple: administración de usuarios. En la vista principal tenemos una lista de usuarios en una grilla; seleccionar un usuario habilitará el botón ''Editar''. Estamos agarrando la fila seleccionada en la grilla (usando el bind {selection : ''selectedUser'';} y luego pasamos esto a la vista ''Edit'': Ext.create(''viewName'', {viewModel:{data : selectedUser}});

Ahora, en los términos más simples, el modelo de "usuario" tiene un "nombre" y un "idioma". El formulario de edición tendrá un cuadro de texto para ''nombre'' y un cuadro combinado para el idioma. Este cuadro combinado se vincula a una tienda que contiene todos los idiomas con ''langId'' y ''langName'' como campos:

xtype: ''combobox'', displayField: ''langName'', valueField: ''langId'', bind: { store: ''{allLangs}'', value: ''{allLangs.langId}'', selection: ''{selectedLang}'' }.

Además, el formulario ''Editar'' tendrá el cuadro de texto vinculado al nombre del usuario seleccionado:

bind : {value : ''{selectedUser.Name}''}

Ahora, en el evento afterRender , estoy configurando el valor de langName del selecteUser como el valor seleccionado del combobox:

var displayValue = viewModel.get(''selectedUser'').get(''langName''); langCombo.setValue(displayValue);

OK, ahora ¿cómo puede saber si el registro actual (''selectedUser'') ha cambiado el idioma? Si estoy comprobando el model.dirty propiedad model.dirty sigue siendo false incluso si el valor del idioma no es el mismo que inicialmente. ¿Cómo debo vincular el cuadro combinado para que establezca la propiedad dirty del modelo en true cuando se modificó el valor seleccionado?

Obviamente, si estoy editando el name el modelo tendrá la propiedad dirty true .

Gracias de antemano.