2016-06-02 3 views
1

내 webapp는 사용자 및 작업과 관련된 목록 (삽입, 삭제, ecc)이있는 CRUD입니다. 사용자를 추가하려면 모달 필드 (부트 스트랩 - 사용자)를 입력해야합니다. 문제는 삽입 후 목록이 자동으로 업데이트되지 않는다는 것입니다. HTML :AngularJS에서 삽입/업데이트 후 테이블 새로 고침

... 
ng-repeat="p in list" 
... 

JS :

내 코드입니다
var app = angular.module('app', [ 'ui.bootstrap', 'ngResource' ]); 

app.controller("FirstController", [ 
     '$scope', 
     'ElementFactory', 
     'ElementsFactory', 
     '$uibModal', 
     function($scope, ElementFactory, ElementsFactory, $uibModal) { 

      $scope.list = ElementsFactory.query(); 

      $scope.add = function() { 

       var modalAddInstance = $uibModal.open({ 
        animation : true, 
        templateUrl : 'addModal.html', 
        controller : 'addModalController', 
        resolve : { 
         element : function() { 
          return $scope.element; 
         } 
        } 
       }); 
      }; 

     } ]); 

app.controller("addModalController", function($scope, $uibModalInstance, 
     ElementsFactory, element) { 

    $scope.element = element; 



    $scope.addCancel = function() { 
     $uibModalInstance.dismiss('cancel'); 
    }; 

    $scope.addElement = function() { 
     ElementsFactory.create($scope.element, function(){ 
      //REFRESH TABLE HERE ********************** 
      $uibModalInstance.close(); 
     }); 



    }; 

}); 

app.factory('ElementsFactory', [ '$resource', function($resource) { 
    return $resource('rest/all', {}, { 
     query : { 
      method : 'GET', 
      isArray : true 
     }, 
     create : { 
      method : 'POST' 
     } 
    }); 
} ]); 

일단 새로운 항목을 추가,이되지 자동으로 페이지 새로 고침 이후에만 표시됩니다. 테이블이 자동으로 업데이트된다는 것을 나타낼 때 삽입 할 코드는 무엇입니까?

답변

0

FirstController의 $ scope.list에 새 항목을 추가해야합니다. 새로운 항목이 추가되면 $ scope.list를 업데이트 할 곳이 없습니다.

app.controller("addModalController", function($rootScope,$scope, $uibModalInstance, 
      ElementsFactory, element) { 

     $scope.element = element; 



     $scope.addCancel = function() { 
      $uibModalInstance.dismiss('cancel'); 
     }; 

     $scope.addElement = function() { 
      ElementsFactory.create($scope.element, function(){ 
       //REFRESH TABLE HERE ********************** 
       $rootScope.$broadcast("Element Added"); 
       $uibModalInstance.close(); 
      }); 



     }; 

    }); 

app.controller("FirstController", [ 
     '$scope', 
     'ElementFactory', 
     'ElementsFactory', 
     '$uibModal', 
     function($scope, ElementFactory, ElementsFactory, $uibModal) { 

      $scope.list = ElementsFactory.query(); 

      $scope.add = function() { 

       var modalAddInstance = $uibModal.open({ 
        animation : true, 
        templateUrl : 'addModal.html', 
        controller : 'addModalController', 
        resolve : { 
         element : function() { 
          return $scope.element; 
         } 
        } 
       }); 
      }; 

      $scope.$on("Element Added",function(pevent,padata){ 
      $scope.list = ElementsFactory.query(); 
      }) 
     } ]); 
+0

나는 다음과 같이 쓰려고 생각했다 : $ scope.list = ElementsFactory.query(); 삽입 후, 그러나 그것을 취하지 않기 때문에 그것은 작동하지 않는다. – fuerteVentura22

+0

일단 삽입되면 modalcontroller에서 $ rootScope. $ broadcast를 추가 할 수 있으며 주 컨트롤러가이 브로드 캐스트를 청취하도록 할 수 있습니다. 청문회에서 엘리먼트 팩터 리로부터 메인 컨트롤러 상감 질의 호출을 듣는다. (// 여기에 테이블을 새로 고친다. ************************** – Don

+0

mmm. .. 코드를 게시 할 수 있습니까? – fuerteVentura22

관련 문제