2014-12-10 3 views
0

Я новичок в angularjs.I есть список людей, и у каждого человека есть кнопка редактирования и удаления. когда я нажимаю кнопку «Редактировать», отображается диалоговое окно «ng-dialog» и отображается информация о персонаже, и человек может изменять и сохранять информацию о базе данных, за кнопкой «Сохранить» и «Активировать звонок», а также обновлять информацию о базе данных.Как обновить мою область после вызова ajax

Обновление информации о работе базы данных хорошо, но на стороне пользовательского интерфейса мое представление не отражает изменения моей базы данных. Я попытался применить «$ scope. $ Apply();» метод, но я получил сообщение об ошибке "$ digest уже в процессе".

Пожалуйста, помогите мне, как обновить мою область после вызова ajax.

+0

у меня есть доля образец кода http://plnkr.co/edit/pJLF6HnFuY3TqOyyYpJn?p=preview. –

+0

plkr сейчас мертв –

+0

Pkeae проверить это http://plnkr.co/edit/7v91EK3F9juuSGhoTrWU?p=preview. –

ответ

3

shared service Для этого объекта и broadcast любых событий через эту службу. Вещательное событие можно прослушивать в любом контроллере с помощью $scope.$on.

Например:

angular.module("app", []).factory("sharedService", function($rootScope){ 

    var mySharedService = {}; 

    mySharedService.values = {}; 

    mySharedService.personWasUpdated = function(){ 
     $rootScope.$broadcast('update'); 
    } 

    return mySharedService; 
}); 

Ctrl для редактирования человека.

app.controller('personEditController', ['$scope', 'sharedService', '$http', function ($scope, sharedService, $http) { 
    $scope.updatePerson = function(newPerson){ 
     $http.post("../some URL/..", {person: newPerson}) 
      .success(function(data){ 
      sharedService.personWasUpdated(); //event broadcasing 
      }) 
    }; 
} 

Ctrl для отображения списка лиц.

app.controller('personController', ['$scope', 'sharedService', '$http', function ($scope, sharedService, $http) { 
    var loadPersonsData = function(){ 
     $http.get("../some URL/.."). 
     .success(function(data){ 
      $scope.persons = data; 
     }) 
    }; 
    loadPersonsData(); //first load 

    $scope.$on('update', function() { 
     loadPersonsData(); // load after update of any person 
    }); 
} 
0

Попробуйте с $scope.$digest(); или использовать $ HTTP вместо JQuery AJAX или других

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