gpt4 book ai didi

javascript - 使用列名获取存储值 - EXTJS 4

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:26:20 25 4
gpt4 key购买 nike

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);
}
})

这是一个获取返回值的例子

http://localhost/GPS/examples/tabs/get-googlemarker.php?mainid=1  

返回

[{"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"}]

这是get-googlemarker.php的返回值,我想获取保存在 lat 变量中的纬度值和保存在 longt 变量中的经度值。像这样:

找到MainID为1的行,得到列名Latitude值。

更新 2

var lati,longi;
var record = MarkerStore.findRecord('MainID',data.MainID);
if(record) {
lati = record.get('Latitude');
longi = record.get('Longitude');
}

记录返回为空,找不到MainID = 1?为什么? data.MainID值为1。

更新 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',
}

}
});

我添加了idProperty,还是不行。

错误
enter image description here

最新代码

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);
}
})

仍然无法获取纬度值。有什么想法吗?
如何确定 MarkerStore 里面有数据?我认为 MarkerStore 是空的。如何检查?

更新 4

var lati,longi;
var recordPos = MarkerStore.findRecord('MainID', '1');
lati = recordPos.get('Latitude');
longi = recordPos.get('Longitude');

还是不行,recordPos为空。在 FIREBUG 上发现错误

TypeError: recordPos is null
[Break On This Error]
lati = recordPos.get('Latitude');

我认为是 JSON 存储从 PHP 保存数据的问题

更新 5

我可以确定 JSON 存储有数据,因为我尝试使用此代码打印所有 JSON 存储数据

MarkerStore.on('load', function(store, records) {
for (var i = 0; i < records.length; i++) {
console.log(records[i].get('Latitude'));
};
});

它正在控制台上打印数据

最佳答案

一些提示:JSON 支持对象、数组、字符串、 bool 值、 float ,但您只使用字符串?此外,还有一个自动字段配置,因此所有字段都将保留字符串。接下来是您没有为您的模型和阅读器定义任何 idProperty。根据您的 JSON 字符串,我猜这是 ID。你应该添加行

idProperty:'ID'

到模型和阅读器,并将字段 ID 添加到您的模型。如果您不想使用 ID,我想应该是 MainID,所以请插入它。现在,如果您有一个 idProperty,您可以通过调用 store.getById(1234) 通过它的 ID 获取记录。

您也可以像这样进行自定义搜索

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');
}

如果这没有任何返回,请检查您的商店中是否有数据,如果有,请提供更多信息,说明商店如何设置该记录。

关于javascript - 使用列名获取存储值 - EXTJS 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15035246/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com