2017-02-21 7 views
0

**更新:あなたの助けを借りて皆様のおかげでデータを取得しましたが、フィールドがnullの場合、「nullのプロパティ 'splitを読み取れません" 私に何ができる?JSON配列(angularjs)から属性を使用しようとしています

私はこのJSONデータ配列を持っています.2つのオブジェクトを持つサンプルです。

{ 
    "proyecto": "Probando", 
    "complejidad": "Media", 
    "glosa": "QA", 
    "inicio": "30-06-16", 
    "termino": "27-09-16", 
    "completado": "50", 
    "esperado": "100", 
    "estado": "Atrasado", 
    "responsable": "Lionel Messi", 
    "alerta": "01-02-2017 : Se define paso a produccion para el 18-02;\r\n\r\nAnalista responsable: Ronaldo ronald;\r\nEstado Actual: 13\/05 DEF firmado;\r\n\r\nServico curse credito internet, modificar el curse y el que envia la solicitus mod 2 servicos;" 
}, { 
    "proyecto": "Migracion", 
    "complejidad": "Alta", 
    "glosa": "QA", 
    "inicio": "18-01-16", 
    "termino": "22-04-77", 
    "completado": "27", 
    "esperado": "86", 
    "estado": "Atrasado", 
    "responsable": "Christiano ronaldo", 
    "alerta": "08-02-2017 : Se define salida para 21 al 23 de abril, con dependencia de salida proyecto supercluster;" 
} 

からGETしてデータを取得し、この方法angularjs

$scope.llamada3 = function(){ 

    $http.get("conector.php?tipoDato=query3") 
    .then(function(response) { 
     $scope.mensajeEspera = ""; 
     $scope.datos3 = response.data; 

イムそれは私がフィールドを分割することができますから、属性「alerta」を取得しようとしています「;」終了しますが、動作していません。 $scope.datos3.currentObj[i].alerta.split(';');とあなたが$scope.dataos3

でこれらの変更を保存していない:私はあなたがして、未定義にアクセスしているNGリピート

<tr ng-repeat="z in datos3"> 
     <td style="vertical-align: top;"><a href="#" ng-click="mostrar_proyecto(z.project_id)">{{z.proyecto}}</a></td> 
     <td style="vertical-align: top;">{{z.complejidad}}</td> 
     <td style="vertical-align: top;">{{z.glosa}}</td> 
     <td style="vertical-align: top;">{{z.inicio}}</td> 
     <td style="vertical-align: top;">{{z.termino}}</td>  
     <td style="vertical-align: top;">{{z.estado}}</td> 
     <td style="vertical-align: top;">{{z.responsable}}</td>  
     <td style="vertical-align: top;"> 
      <div class="hooveralerta"> 
       <div ng-repeat="d in alerta"> 
        {{d}} 
       </div> 
      </div> 
     </td> 
+0

?より具体的にしてください。 –

+0

私はすべてをチェックしましたが、私の問題はfor条件にあると思います – frager0

+0

'currentObj [i] = $ scope.datos3 [i] .alerta.split( ';');'の代わりに 'currentObj [i] ] ' –

答えて

0

ここで起こっカップルのものがあります。まず、datos3にはcurrentObjはありません。その代わり、

for(var i = 0; i < $scope.datos3.length; i++){ 
    var currentObj = $scope.datos3[i]; 
    currentObj.alertaObject = currentObj.alerta.split(';'); 
} 

のようなものに変更し

currentObj.alerta[i] = $scope.datos3.currentObj[i].alerta.split(';'); 

を、あなたのJSONオブジェクト内の改行を削除したい場合は、この含めることができます:これは動作しません

for(var i = 0; i < datos3.length; i++){ 
    var currentObj = datos3[i]; 
    currentObj.alertaObject = currentObj.alerta.split(';'); 
    for (var j in currentObj.alertaObject) { 
     currentObj.alertaObject[j] = currentObj.alertaObject[j].replace(/\n/g,'').replace(/\r/g,''); 
    } 
    console.log(currentObj.alertaObject); 
} 

最後に、実際のJSONが実際のJSONである場合、JSONが無効であり、問​​題が発生している可能性があります。あなたは、オブジェクトを含む1にあなたの二つの別々のオブジェクトを囲む必要があります:

[{ 
    "proyecto": "Probando", 
    "complejidad": "Media", 
    "glosa": "QA", 
    "inicio": "30-06-16", 
    "termino": "27-09-16", 
    "completado": "50", 
    "esperado": "100", 
    "estado": "Atrasado", 
    "responsable": "Lionel Messi", 
    "alerta": "01-02-2017 : Se define paso a produccion para el 18-02;\r\n\r\nAnalista responsable: Ronaldo ronald;\r\nEstado Actual: 13\/05 DEF firmado;\r\n\r\nServico curse credito internet, modificar el curse y el que envia la solicitus mod 2 servicos;" 
}, { 
    "proyecto": "Migracion", 
    "complejidad": "Alta", 
    "glosa": "QA", 
    "inicio": "18-01-16", 
    "termino": "22-04-77", 
    "completado": "27", 
    "esperado": "86", 
    "estado": "Atrasado", 
    "responsable": "Christiano ronaldo", 
    "alerta": "08-02-2017 : Se define salida para 21 al 23 de abril, con dependencia de salida proyecto supercluster;" 
}] 

の作業例:動作していない何https://jsfiddle.net/mspinks/yfyaehd7/

+0

あなたの答えをありがとう、私はあなたのようにループを挑戦しようとしました。今度は、 "nullのプロパティ 'split'を読み取ることができません" – frager0

+0

@ frager0、またあなたのJSONコードをチェックするエラーを表示します。それがまさにそのように見える場合、それは無効なjsonです。あなたの2つの別々のオブジェクトは、包含するオブジェクトの中に囲む必要があります。私の更新された答えを確認するには、動作しているサンプルが含まれています:https://jsfiddle.net/mspinks/yfyaehd7/ –

+0

ここで改行のデータが得られます!!私のエラーは、 。どうすれば修正できますか? – frager0

0

を使用した瞬間

for(var i = 0; i < $scope.datos3.length; i++){ 
    var currentObj = $scope.datos3[i]; 
    currentObj.alerta[i] = $scope.datos3.currentObj[i].alerta.split(';'); 
} 

とHTMLイム内でこれを持っていますループを変更して、次のように直接アクセスしてみてください。

for(var i = 0; i < $scope.datos3.length; i++){ 
    $scope.datos3[i].alerta = (typeof $scope.datos3[i].alerta == 'string') 
     ? $scope.datos3[i].alerta.split(';') 
     : []; 
} 

上記は、$http.get()が完了した後にのみ行う必要があります。

例:

$http.get("conector.php?tipoDato=query3") 
    .then(function(response) { 
     $scope.mensajeEspera = ""; 
     $scope.datos3 = response.data; 
     // Do the alteration here 
     for(var i = 0; i < $scope.datos3.length; i++){ 
      $scope.datos3[i].alerta = (typeof $scope.datos3[i].alerta == 'string') 
       ? $scope.datos3[i].alerta.split(';') 
       : []; 
     } 
    }; 
+0

あなたの答えをありがとう、私はあなたのようにループを担当しようとしました。これで、「nullのプロパティ 'split'を読み取れません」というエラーが表示される – frager0

+0

JSON応答は有効ですか?あなたの質問のコードは有効なJSONではないので、配列の括弧がありません: '[...] ' – segFault

+0

はい、申し訳ありません。サンプルとして2つのオブジェクトをコピーしました。私はすべての属性を取得しました。フィールド "Alerta"だけがありません。 – frager0

関連する問題