Obtenir le magasin de la valeur avec le nom de la colonne - EXTJS 4
Ext.define('GoogleMarkerModel', {
extend: 'Ext.data.Model',
fields: ['Locating','MainPower','Acc','PowerOff','Alarm','Speed','Direction','Latitude','Longitude','DateTime','MainID', 'DeviceID','IOState','OilState']
});
var MarkerStore = Ext.create('Ext.data.JsonStore', {
model: 'GoogleMarkerModel',
autoLoad: true,
proxy: {
type: 'ajax',
url: 'get-googlemarker.php',
baseParams: { //here you can define params you want to be sent on each request from this store
mainid: 'value1'
},
reader: {
type: 'json',
root: 'images'
}
}
});
tree.on('checkchange', function(node){
var data = node.data;
Ext.MessageBox.show({
title: 'Changed checkbox status',
msg: 'MainID: ' + data.MainID + ' <br /> Checkbox status: ' + data.checked,
icon: Ext.MessageBox.INFO
});
if (data.checked == true){
MarkerStore.load({
params: { //here you can define params on 'per request' basis
mainid: data.MainID,
}
})
var options = {
lat:MarkerStore[0].Latitude,
lng:MarkerStore[0].Longitude,
marker: {title:"Hello World!"},
listeners: {
click: function(e){
}
}
}
addDoctorLocation(options);
}
})
Et c'est un exemple pour récupérer la valeur de retour
http://localhost/GPS/examples/tabs/get-googlemarker.php?mainid=1
retour
[{"ID":"1808","Locating":"1","MainPower":"0","Acc":"1","PowerOff":"1","Alarm":"128","Speed":"0","Direction":"293","Latitude":"5.391788482666016","Longitude":"100.29693603515625","DateTime":"2013-02-19 15:44:36","MainID":"1","IOState":"0","OilState":"0"}]
C'est la valeur de retour de get-googlemarker.php,
Je veux obtenir la Latitude de la valeur à enregistrer dans lat variable et la Longitude enregistrer dans longt variable. Quelque chose comme ceci:
Trouver la ligne où MainID est 1 et obtenir le nom de la colonne Latitude de la valeur.
Mise à JOUR 2
var lati,longi;
var record = MarkerStore.findRecord('MainID',data.MainID);
if(record) {
lati = record.get('Latitude');
longi = record.get('Longitude');
}
Le dossier de retour est nulle, ne peut pas trouver le MainID = 1? Pourquoi? les données.MainID valeur est 1.
Mise à JOUR 3
Ext.define('GoogleMarkerModel', {
extend: 'Ext.data.Model',
idProperty:'MainID',
fields: ['ID','Locating','MainPower','Acc','PowerOff','Alarm','Speed','Direction','Latitude','Longitude','DateTime','MainID','IOState','OilState']
});
var MarkerStore = Ext.create('Ext.data.JsonStore', {
model: 'GoogleMarkerModel',
autoLoad: true,
proxy: {
type: 'ajax',
url: 'get-googlemarker.php',
baseParams: { //here you can define params you want to be sent on each request from this store
mainid: 'value1'
},
reader: {
type: 'json',
idProperty : 'MainID',
}
}
});
J'ai ajouté idProperty, mais ne peut toujours pas de travail.
ERREUR
DE CODE PLUS TARD,
tree.on('checkchange', function(node){
var data = node.data;
if (data.checked == true){
MarkerStore.load({
params: { //here you can define params on 'per request' basis
mainid: data.MainID,
}
})
var lati,longi;
var recordPos = MarkerStore.findBy(function(rec,id){
return rec.data.MainID == data.MainID;
}, this);
if(recordPos > -1) {
var record = MarkerStore.getAt(recordPos);
lati = record.get('Latitude');
longi = record.get('Longitude');
}
Ext.MessageBox.show({
title: 'Changed checkbox status',
msg: 'MainID: ' + data.MainID + ' <br /> Checkbox status: ' + data.checked + ' <br /> lati: ' + lati + ' <br />',
icon: Ext.MessageBox.INFO
});
var options = {
lat:lati,
lng:longi,
marker: {title:"Hello World!"},
listeners: {
click: function(e){
}
}
}
addDoctorLocation(options);
}
})
Toujours pas le lati valeur. Une idée?
Comment assurer que MarkerStore avoir les données à l'intérieur? Je pense que MarkerStore sont vides. Comment vérifier cela?
Mise à JOUR 4
var lati,longi;
var recordPos = MarkerStore.findRecord('MainID', '1');
lati = recordPos.get('Latitude');
longi = recordPos.get('Longitude');
toujours pas de travail,recordPos est null. ERREUR TROUVÉE SUR FIREBUG
TypeError: recordPos is null
[Break On This Error]
lati = recordPos.get('Latitude');
je pense que c'est le problème JSON magasin de sauvegarder les données à partir de PHP
Mise à JOUR 5
je peux assurer que JSON magasin de données parce que j'essaie d'imprimer tous JSON stocker des données avec ce code
MarkerStore.on('load', function(store, records) {
for (var i = 0; i < records.length; i++) {
console.log(records[i].get('Latitude'));
};
});
et elle est d'avoir des données d'impression sur console
markstore[0].Latitude
pour accéder à la valeur?j'ai modifié quelque chose, si la markstore sont multi-lignes, je veux savoir où MainID est égal à 1 et le retour de la Latitude de la Valeur,comment faire?
courte pointe. virgules - vous devriez vraiment penser à utiliser un autre ide avec vérification de la syntaxe de soutien (par exemple, netbeans) ou utiliser quelque chose comme jslint, ou que ce soit
Pourriez-vous poster le JSON que vous recevez à partir du serveur de votre dernier exemple ?
voir le code ci-dessus, il est même
[{"ID":"1808","Locating":"1","MainPower":"0","Acc":"1","PowerOff":"1","Alarm":"128","Speed":"0","Direction":"293","Latitude":"5.391788482666016","Longitude":"100.29693603515625","DateTime":"2013-02-19 15:44:36","MainID":"1","IOState":"0","OilState":"0"}]
OriginalL'auteur John Walker | 2013-02-22
Vous devez vous connecter pour publier un commentaire.
comme
sra
dit vous pouvez définiridProperty
puis rechercher l'enregistrement par
MarkerStore.getById(123)
ou " MarkerStore.trouverenregistrement('MainId', 123)'Important: Il semble extjs utilisation === au lieu de == pour comparer deux variables. alors si une variable est de type int et l'autre a un type de chaîne puis la comparaison peut être faux ( par exemple pour la "1" === 1).
ensuite, vous devez utiliser 'MarkerStore.trouverenregistrement('MainId', '123')' à la place.
MarkerStore.findRecord('MainId', 123)
alors comment obtenir la Latitude de la Valeur?u peut voir ma mise à JOUR 4 du code, aussi ne peut pas fonctionner
OriginalL'auteur Omid Shariati
Quelques conseils: JSON prend en charge les objets, les tableaux, string, boolean, float, mais vous êtes juste en utilisant des chaînes? En outre, une auto configuration du champ de sorte que tous de rester à la les chaînes. Ensuite, c'est que vous n'avez pas de
idProperty
défini, ni pour votre modèle ou votre reader. Basé sur votre chaîne JSON je suppose que c'est l'ID. Vous devez ajouter la lignele modèle et le lecteur et ajoutez le champ
ID
à votre modèle. Si vous ne souhaitez pas utiliserID
je suppose que ce seraitMainID
donc insérer. Maintenant, si vous avez un idProperty vous pouvez obtenir le record c'est l'id de l'appelantstore.getById(1234)
.Vous pouvez également faire des recherches personnalisées comme ce
Si cela renvoie rien vérifier s'il existe des données dans votre magasin et si oui, fournir plus d'informations comment la stocker des configurations de cet enregistrement.
to the model and the reader and add the field ID to your model.
,je n'ai pas undertsand comment ajouter IdProperty pour le lecteur, il ycode mis à jour,veuillez consulter le code ci-dessus.merci
votre code
recordpos
avoir d'erreur,vous ne pouvez pas travailler peut-être hrere}, this);
?J'ai oublié de retour qui a provoqué l'erreur. Veuillez essayer à nouveau
ne peut toujours pas obtenir la latitude et la longitude, je peux assurer que JSON sont d'avoir des données de retour,parce que je m à l'aide de firebug pour vérifier,et voir les données sont de retour, mais lorsque l'alerte de la lati valeur, il n'est pas défini.des idées?
OriginalL'auteur sra