2014-11-24 2 views
0

Я пытаюсь реализовать простую crud используя Google App Engine (Cloud endpoints) и AngularJs.Список не обновляется в AngularJS

Я разработал свой сервер и все, что хорошо работает. Моя проблема - угловая.

После того, как я вызываю свое обслуживание для сохранения или удаления, мой список не обновляется.

Мой код контроллера:

app.controller('admEstadoController',['$scope','admEstadoService', function ($scope, admEstadoService) { 

$scope.saveEstado = function() { 

    admEstadoService.saveEstado($scope); 
} 

$scope.deleteEstado = function(id) { 

    admEstadoService.deleteEstado(id,$scope); 
} 

$scope.listEstado = function() { 

    admEstadoService.listEstado($scope); 
} 


}]); 

и это моя служба:

app.factory('admEstadoService',[function() { 

    var admEstadoService = {}; 

    admEstadoService.listEstado = function($scope) { 
     gapi.client.enadepopapi.listEstado().execute(function(resp) { 
      $scope.estados = resp.items; 
      $scope.$apply(); 

     }); 

    } 



    admEstadoService.saveEstado = function($scope) { 

     estado = { 
       "estado" : $scope.estado, 
       "nome" : $scope.nome 
     }; 

     gapi.client.enadepopapi.saveEstado(estado).execute(); 

    } 


    admEstadoService.deleteEstado = function(id,$scope) { 

     estado = { 
       "estado" : id 

     }; 

     gapi.client.enadepopapi.deleteEstado(estado).execute(); 

    } 



    return admEstadoService; 

}]); 

И на мой взгляд:

<div class="panel panel-default" ng-show="is_backend_ready"> 
<div class="panel-heading">Manutenção de Estados</div> 
<div class="panel-body">    
    <div class="row"> 
     <div class="col-md-6 col-md-offset-3"> 
      <form role="form"> 
       <div class="form-group"> 
        <label for="txtEstado">Estado</label> 
        <input type="text" class="form-control" id="txtEstado" placeholder="" ng-model="estado"> 
       </div> 
       <div class="form-group"> 
        <label for="txtNome">Nome</label> 
        <input type="text" class="form-control" id="txtNome" placeholder="" ng-model="nome"> 
       </div> 
       <button type="submit" ng-click="saveEstado()" class="btn btn-default">Gravar</button> 
      </form> 

      <div class="bs-example-bg-classes" style="margin-top:10px;"> 
       <p class="bg-success"> Registro Gravado com sucesso!</p> 
      </div> 

      <div class="clearfix"></div> 

      <div ng-init="listEstado()"> 
       <table class="table table-hover"> 
        <tbody class="table-hover"> 
         <tr> 
          <th>Estado</th> 
          <th>Nome</th> 
          <th>Operação</th> 
         </tr> 

         <tr ng-repeat="estado in estados"> 
          <td>{{estado.estado}}</td> 
          <td>{{estado.nome}}</td> 
          <td><button type="button" ng-click="deleteEstado(estado.estado)" class="btn btn-default">Excluir</button> 
         </tr> 
        </tbody> 
       </table> 
      </div> 
     </div> 
    </div> 
</div> 

+0

Объясните нам, почему вы думаете, что он должен * обновить. –

+0

Необходимо обновить свои данные. Вызовите функцию списка после сохранения/обновления. – Nipper

ответ

1

Даже если вы обновляете данные в backend, AngularJS не зная об этом. Вам необходимо позвонить listEstado() после сохранения или удаления.

Однако, если вы используете ndb в качестве хранилища данных, имейте в виду, что ваши обновленные данные могут быть недоступны мгновенно из-за возможного последовательного поведения ndb.

Смежные вопросы