javascript – 使用列名称获取商店值 – EXTJS 4
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 使用列名称获取商店值 – EXTJS 4,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4334字,纯文字阅读大概需要7分钟。
内容图文
![javascript – 使用列名称获取商店值 – EXTJS 4](/upload/InfoBanner/zyjiaocheng/816/2822b0b1adf24f6e8092cd801d6ad9ee.jpg)
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变量中保存Latitude值,在longt变量中保存Longitude.像这样的东西:
找到MainID为1的行,并获取列名称纬度值.
更新2
var lati,longi;
var record = MarkerStore.findRecord('MainID',data.MainID);
if(record) {
lati = record.get('Latitude');
longi = record.get('Longitude');
}
记录返回为null,找不到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,但仍然无法正常工作.
错误
最新代码
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);
}
})
仍然无法获得lati值.任何的想法?
如何确定MarkerStore里面有数据?我认为MarkerStore是空的.怎么检查这个?
更新4
var lati,longi;
var recordPos = MarkerStore.findRecord('MainID', '1');
lati = recordPos.get('Latitude');
longi = recordPos.get('Longitude');
仍然无法正常工作,recordPos为null.在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'));
};
});
它在控制台上打印数据
解决方法:
正如sra所说,你可以设置idProperty
var MarkerStore = Ext.create('Ext.data.JsonStore', {
model: 'GoogleMarkerModel',
autoLoad: true,
proxy: {
type: 'ajax',
url: 'get-googlemarker.php',
baseParams: {
mainid: 'value1'
},
reader: {
type: 'json',
root: 'images',
idProperty: 'MainId'
}
}
});
然后通过MarkerStore.getById(123)或’MarkerStore.findRecord(‘MainId’,123)找到记录’
重要:似乎extjs使用===运算符而不是==来比较两个变量.然后,如果变量具有int类型而另一个具有字符串类型,则比较可能为假(例如,对于“1”=== 1).
那么你应该使用’MarkerStore.findRecord(‘MainId’,’123′)’代替.
内容总结
以上是互联网集市为您收集整理的javascript – 使用列名称获取商店值 – EXTJS 4全部内容,希望文章能够帮你解决javascript – 使用列名称获取商店值 – EXTJS 4所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。