2016-10-05 2 views
0

Ich habe eine Speicherfunktion, in der die Änderungen gespeichert werden, und nach der Erfolgsantwort von save rufe ich eine get-Funktion auf, die die neuesten aktualisierten Daten aus der Datenbank abruft. Aber die Änderungen spiegeln sich nicht in der Ansicht wider.Winkelbereichsvariable, die nach dem Speichern nicht aktualisiert wird

Was ist die Lösung dafür? Code ist wie diese

$scope.saveMenu = function() { 
     $('.save-button').prop('disabled', true); 
     $http({ 
      url: '/api/menu/save', 
      method: 'POST', 
      data: 'aff=' +JSON.stringify($scope.aff) + '&menuAccess='+ JSON.stringify($scope.menuAccess) + '&brokerId=' + $scope.filter.business_filter, 
      headers:{'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'} 
     }).success(function (response) { 
      var oResponse = angular.fromJson(response); 
      $('.save-button').prop('disabled', false); 
      if (oResponse.success) { 
       $scope.$apply(function() { 
        $scope.getUsers(); 
       }); 

       $('.save').fadeIn(); 
       setTimeout(function() { 
        $('.save').fadeOut(); 
       }, 2000); 

      } else { 
       $window.location.href = $rootScope.ng_url + '/error/' + oResponse.status_code; 
      } 
     }); 
    } 

    $scope.getUsers = function() { 
     $scope.filter.view_group_filter = ($scope.filter.view_group_filter != '') ? $scope.filter.view_group_filter : 0; 

     if ($scope.filter.business_filter != -5) { 
      $('#group').attr('disabled', true); 
     } else { 
      $('#group').attr('disabled', false); 
     } 

     $http.get('/api/menu/users/' + $scope.filter.business_filter + '/' + $scope.filter.view_group_filter) 
      .then(
       function (response) { 
        // success callback 
        var oResponse = angular.fromJson(response.data); 
        if (oResponse.success) { 
         $scope.aff = oResponse.data.Aff; 
        } else { 
         $window.location.href = $rootScope.ng_url + '/error/' + oResponse.status_code; 
        } 
       } 
      ); 
    } 
+4

Es wird kompliziert sein, ohne ein Stück Code zu beantworten – Weedoze

+0

Codebeispiel hinzugefügt – devdoubts

+0

Eine Sache: Sie müssen jquery Ereignisse in einem $ timeout() aufrufen ... ist nicht dasselbe von Ihrem setTimeout. –

Antwort

0

$ gelten bringt Sie in Winkel Kontext. Sie müssen $ scope nicht verwenden $ apply, da Sie $ http verwenden, Sie befinden sich bereits im eckigen Kontext.

$scope.$apply(function() { 
    $scope.getUsers(); 
}); 

ändert dies,

$scope.getUsers(); 

Hier SetTimeout keinen Umfang variable Aktualisierung, kein Schaden. Aber wenn es irgendwelche Umfangsdaten aktualisiert. Anstatt setTimeout zu verwenden, verwende $ timeout, das intern $ apply und damit $ digest aufruft.

+0

Dies hat das Problem nicht gelöst. – devdoubts

+0

Können Sie mir ein Fehlerprotokoll zur Verfügung stellen? – ram1993

Verwandte Themen