2014-02-18 2 views
0

검도 UI 데이터 소스 개체에 배열 값을 가져 오는 데 문제가 있습니다. 나는 고치기 위해 많은 것을 수색하고 시도했지만, 3 주안에 해결책을 찾지 못했습니다. 기본적으로 나는 Kendo UI 데이터 소스의 필드로 할당 된 'base64img'라는 배열의 값을 가져오고 싶지만 배열 값의 데이터에 액세스 할 수 없습니다. 여기 내 모든 통계입니다 XML 응답 이 (응답에 오류가있는 경우 나 보안을 위해 수정 된 무시하십시오) -Kendo UI 데이터 소스 제한

<?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; 

     }*/ 

이가이다 개체의 결과 Google 개발자 도구 : 신경 쓰지 마세요 내 평판이 사진을 게시 할만큼 충분히 높지 않다고 들었습니다. 개발자 도구에서 붙여 넣기 코드 (신경 끄시 고 너무 많은 공간을 차지) : 기본적으로 _prestineData이 두 배열 0에서 imageBase64 및 imageURI라고 한 | 1 배열 장소와 값이 각각의 아이 배열의 자리에하는 #text (0으로 표시됩니다, 1,2,3 등).

+0

코드에 대한 링크를 게시하거나 jsFiddle 샘플을 만들면 좋은 대답을 얻을 가능성이 더 높습니다. 즉, 게시 한 XML을 예상되는 배열 구조에 자동으로 파싱 할 수 있는지 확실하지 않습니다. – kiprainey

답변

1

여기 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']입니다.

+0

감사합니다. 자바 스크립트를 사용하여 DOM에서 값을 가져 오는 방법에 대해 실제로 배워야 할 필요가 얼마나 많은지 보여줍니다. 벽에 머리를 대고있어 영원히 재미 있었고 너무 가까이서 볼 수있었습니다. 대답은 정확합니다. 다시 감사합니다. – NutsAndBolts

관련 문제