2014-11-24 80 views
0

我試圖使用谷歌應用程序引擎(雲端點)和AngularJs實現一個簡單的粗糙。列表不刷新AngularJS

我開發了我的後端,一切正常。我的問題是Angular。

將我的服務呼叫保存或刪除後,我的列表不刷新。

我的代碼控制器:

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

向我們解釋你爲什麼認爲它應該刷新。 – 2014-11-24 11:53:55

+0

你必須刷新你的數據。再次保存/更新後調用列表功能。 – Nipper 2014-11-24 16:02:38

回答

1

即使你更新數據在後端,AngularJS是沒有意識到這一點。保存或刪除後需要撥打listEstado()

但是,如果您使用ndb作爲您的數據存儲,請注意,由於ndb的最終一致性行爲,您的更新數據可能不會立即可用。