alejo8591 / unipiloto-am-2

Repositorio Oficial para el Diplomado en Desarrollo de Aplicaciones Móviles (AM-2)
MIT License
11 stars 5 forks source link

duda editando json en controllers #31

Closed cmauroie closed 9 years ago

cmauroie commented 9 years ago

Hola, En el siguiente controlador uso un servicio el cual me retorna un json, A este json se le debe editar un campo antes de enviarlo a la vista,entonces si lo cargo con este controlador funciona la lista bien sin problemas y muestra los campos sin editar tal cual como viene del servidor.

.controller('AccountsCtrl', function($scope, getAccountsDataService){ getAccountsDataService.resp.query(function(data){ $scope.accounts = data; },function(dataError){ var alertPopup = $ionicPopup.alert({ title: 'Login failed!', template: 'Please check!' }); }); })

pero si trato de recorrer el json para modificar un campo y retornarlo no me muestra nada en la lista,

.controller('AccountsCtrl', function($scope, getAccountsDataService){ getAccountsDataService.resp.query(function(data){ for(var i in data){ if(data[i].account.type.id == '17'){ data[i].status.formattedReservedAmount = "texto editado"; }; }; $scope.accounts = data; },function(dataError){ var alertPopup = $ionicPopup.alert({ title: 'Login failed!', template: 'Please check ' }); }); });

vista


{{ account.account.type.name }}
{{ account.status.formattedReservedAmount }}

JSON: retorna el servicio, la linea resaltada es la que estoy tratando de editar.

[ { "account": { "id": 913, "type": { "id": 17 }, "default": true }, "status": { "formattedReservedAmount": "$ 0,00 Pesos"//Objeto a editar } }, { "account": { "id": 4050, "type": { "id": 35 }, "default": false }, "status": { "formattedReservedAmount": "$ 0,00 Pesos" } } ]

alejo8591 commented 9 years ago

Cuéntame como lo estas editando y como lo estas haciendo?

cmauroie commented 9 years ago

cuando recibo el json lo recorro de esta forma: donde data es el json.

for(var i in data){ if(data[i].account.type.id == '17'){ data[i].status.formattedReservedAmount = "texto editado"; }; }; luego cuando termina el for.

envio data a: $scope.accounts = data;

cmauroie commented 9 years ago

Solución:

$scope.accounts = data.map(function (c) {
if (c.account.type.id == '17'){ c.status.formattedReservedAmount = ':DDDD'; } return c; });

ejemplo:

var numbers = [1, 4, 9]; var doubles = numbers.map(function(num) { return num * 2; }); // doubles is now [2, 8, 18]. numbers is still [1, 4, 9]