ExtJs Comment lier la grille d'enregistrement dans le ViewModel champs?
J'ai un panneau de Formulaire avec un champ de texte et une grille. Maintenant, je veux prendre userinput
et d'obtenir la valeur Par le biais du ViewModel json
de l'envoyer au serveur.
Problème ici est, je suis en mesure de lier textfield, alors je suis textfield valeur comme paramètre dans le modèle de vue, mais comment puis-je obtenir sélectionnés ligne de la grille de données en tant que second paramètre dans viewMolde.getData()
.
Par Exemple:
Modèle:
Ext.define('UserModel', {
extend: 'Ext.data.Model',
fields: [{
name: "name",
type: "string"
}, {
name: "gridRecord",
type: "auto"
}]
});
Modèle De Vue :
Ext.define('QAVM', {
extend: 'Ext.app.ViewModel',
alias: 'viewmodel.QAVM',
model: 'UserModel'
});
Vue :
Ext.define('View', {
extend: 'Ext.form.Panel',
xtype: 'app-test',
viewModel: 'QAVM',
items: [{
xtype: 'textfield',
fieldLabel: 'TestInt',
bind: '{name}' /**ABLE TO BIND and GETTING VALUE In viewModel.getData()*/
}, {
xtype: 'grid',
title: 'Simpsons',
formBind: true,
store: 'storeName',
bind: {
selection: 'gridSelectedRecord'
}, //HOW TO BIND GRID SELECTED RECORD TO MODEL'S SECOND FIELD "gridRecord"
columns: [{
text: 'Address-1',
dataIndex: 'addr'
}, {
text: 'Pincode',
dataIndex: 'pincode',
flex: 1
}]
}]
});
Il est étonnant que vous obtenez le
name field
de cette façon. Un viewmodel ne dispose pas d'un model property
(pour une raison quelconque) et vous devez le supprimer. D'étudier les différentes options de configuration: docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/...OriginalL'auteur Nish | 2015-08-27
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, je tiens à dire que l'omi votre approche est erronée. Vous ne voulez pas envoyer vos données sur le serveur par l'obtention de vos données à partir de votre
viewmodel
. Vous souhaitez envoyer votre dossier sur le serveur par l'intermédiaire d'unproxy
sur votremodel
oustore
. Les données de votreviewmodel
devrait seulement être utilisé pour lier votreview
. Lestore
et lamodels
sont les données de votre serveur. Mais unstore
peut être lier (et filtré) par l'intermédiaire d'unviewmodel
à votreview
.Model-View-ViewModel
est un modèle où l'model
est pour vos données (et de la migration par le biais deproxy
), leview
pour représenter vos données et laviewmodel
à coller votremodel
et votreview
ensemble.Vous pouvez le faire en utilisant
formulas
sur votreviewmodel
. Vous pouvez ensuite lier profonde de la sélection courante de la grille à votre formulaire.Après l'édition de la
model
ou l'ajout de modèles à votrestore
sauvegarder/synchroniser votrestore
ou enregistrer votremodel
.Ainsi, en un seul formulaire j'ai besoin de deux textfield pour l'id et le nom & tableau de contacts à qui je suis censé choisir à partir de la grille de sélection. Et un bouton de sauvegarde qui permettra de choisir les entrées de textfields et de sélection de la grille et de l'envoyer au serveur.
Pour cela vous avez besoin des modèles associés. Un
user model
avec un hasMany rapport à uncontact model
. Ensuite, vous pouvez sauvegarder/synchroniser le magasin liées à la chargé (enregistrement de modèle d'utilisateur) de la forme ou de sauvegarder le modèle de l'utilisateur (chargé d'enregistrer dans le formulaire). docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/... docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/... docs.sencha.com/extjs/6.0/6.0.0-classic/#!/api/...Je ne comprends pas quelle est la formule de l'ajouter ici. Vous pouvez le faire directement: { fieldLabel: 'Nom', bind: '{groupGrid.sélection.name}' },
OriginalL'auteur Tarabass
Testé sur extjs 6.
OriginalL'auteur tarasnn