[英]Trying to use an attribute from a JSON array (angularjs)
**更新:現在我感謝大家的幫助,但是當該字段為null時,我收到錯誤消息“無法讀取null的屬性'split'”,該怎么辦?
我有這個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;"
}
這種方式從angularjs用GET獲取數據
$scope.llamada3 = function(){
$http.get("conector.php?tipoDato=query3")
.then(function(response) {
$scope.mensajeEspera = "";
$scope.datos3 = response.data;
我試圖從中獲取屬性“ alerta”,以便我可以拆分“;”所在的字段 結束但不起作用。 我現在有這個
for(var i = 0; i < $scope.datos3.length; i++){
var currentObj = $scope.datos3[i];
currentObj.alerta[i] = $scope.datos3.currentObj[i].alerta.split(';');
}
在HTML即時通訊中使用ng-repeat
<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>
您正在通過以下方式訪問未定義: $scope.datos3.currentObj[i].alerta.split(';');
並且您沒有將這些更改存儲在$scope.dataos3
嘗試更改循環以直接訪問它們,例如:
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(';')
: [];
}
};
這里發生了幾件事情。 首先, datos3
沒有currentObj
。 所以這行不通:
currentObj.alerta[i] = $scope.datos3.currentObj[i].alerta.split(';');
相反,將其更改為類似
for(var i = 0; i < $scope.datos3.length; i++){
var currentObj = $scope.datos3[i];
currentObj.alertaObject = currentObj.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無效,這可能會引起問題。 您需要將兩個單獨的對象封裝到一個包含對象的對象中:
[{
"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;"
}]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.