【问题标题】:Kendo UI Datasource LimitationKendo UI Datasource Limitation
【发布时间】:2014-03-17 12:57:41
【问题描述】:

我在获取 kendo ui 数据源对象中的数组值时遇到问题。我已经搜索并尝试了很多解决方法,但在 3 周内还没有找到解决方案。基本上,我想获取一个名为“base64img”的数组的值,该数组被分配为 Kendo UI 数据源中的一个字段,但我无法访问该数组值的数据。 以下是我所有的统计数据: (如果回复有错误,请忽略,因为我出于安全考虑修改了) XML 响应 -

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <retrieveIncidentResponse xmlns="http://lal.lala.com/lala/messages/">
            <incidentStructure>
                <geoLoc>LALA1</geoLoc>
                <eventName>PARTY</eventName>
                <incidentStatus>OPEN</incidentStatus>
                <incidentCompltnDate>2012-01-02</incidentCompltnDate>
            </incidentStructure>
            <imageURI>IMAG0001.jpg</imageURI>
            <imageURI>IMAG0002.jpg</imageURI>
            <imageURI>IMAG0003.jpg</imageURI>
            <imageURI>IMAG0004.jpg</imageURI>
            <imageURI>IMAG0005.jpg</imageURI>
            <imageBase64>/9j/4AAQSkZJRgABAQAAAQABAAD</imageBase64>
            <imageBase64>/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkM</imageBase64>
            <imageBase64>EQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJC</imageeBase64>
            <imageBase64>IeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eH</imageBase64>

剑道数据源代码:

var parser = new DOMParser();
var xmlDoc = parser.parseFromString(soapXMLResponse, "application/xml");
var dsIncPictures = new kendo.data.DataSource({
    error: function (e) {
        console.log("ds error: " + e.status);
    },
    data: xmlDoc,
    schema: {
        type: "xml",
        data: "soapenv:Envelope/soapenv:Body/retrieveIncidentResponse",
        model: {
            fields: {
                imageURI: "imageURI",
                imageBase64: "imageBase64"
            },
            hasChildren: true
        }
    },
    pageSize: 50
});

My attempts to get to the values:
/*$drt.globalEditIncWPics.fetch(function()
        {
            $drt.globalEditIncWPics._data(0).imageBase64(0).val;
            $drt.globalEditIncWPics.get("imageURI[0]");
            var field = $drt.globalEditIncWPics.get("imageURI[0]").imageURI[0].length;
            console.log($drt.globalEditIncWPics.get().imageURI(0));
            var field = $drt.globalEditIncWPics.at(0);
            console.log("VALUE: '" + field.text + "'");
            soapRequest.append(bind.soapRequestMessageFields(field.FieldName, field.value));
        });*/
        /*$drt.globalEditIncWPics.fetch();
        for (var idx = 0;idx<=$drt.globalEditIncWPics.length;idx++)
        {
            $drt.globalEditIncWPics.data[0].imageBase64[0].value;

        }*/

这是对象谷歌开发者工具的结果: 没关系,有人告诉我,我的声誉不够高,无法发布照片。 从开发工具粘贴代码(没关系它占用太多空间): 基本上 _prestineData 有两个数组,一个称为 imageBase64 和 imageURI,位于 0|1 数组点中,值在每个子数组点(0、1、2、3 等)中显示为 #text。

【问题讨论】:

  • 如果您可以发布代码链接或创建 jsFiddle 示例,您将更有可能得到一个好的答案。也就是说,我不确定如何将您发布的 XML 自动解析为您期望的数组结构。

标签: javascript arrays kendo-ui datasource


【解决方案1】:

查看您的源代码,这里有一个似乎有效的 fetch 函数,显示了 imageBase64 的所有 4 个值:

dsIncPictures.fetch(function() {
    var data = dsIncPictures.data();
    for (var rowIndex = 0; rowIndex < data.length; rowIndex++) {
        var imageBase64 = data[rowIndex].imageBase64;
        for (var imageIndex = 0; imageIndex < imageBase64.length; imageIndex++) {
            console.log(imageBase64[imageIndex]['#text']);
        }
    }
});

第一行第一张图片的完整路径是data[0].imageBase64[0]['#text']

【讨论】:

  • 非常感谢。它显示了我真的需要学习如何使用 JavaScript 等从 DOM 中提取值。我一直在用头撞墙,看到我如此接近(在某种程度上)很有趣。答案是正确的。再次感谢您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-08
  • 2015-08-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多