Данные angularjs в службе не могут быть разделены между различными контроллерами

0

Я создаю службу:

.factory('patientListBarService', function() {
    var data = {
        pages: 0,
        total:0
    };
    return data;
})

мой ctl 1:

.controller('patientCtl', ['$scope', '$http', 'patientListBarService', function($scope, $http, patientListBarService){
    console.log(patientListBarService);
    $scope.pages = patientListBarService.pages;
    $scope.total = patientListBarService.total;
    $scope.$watch('patientListBarService.pages', function(newVal, oldVal, scope) {
        console.log('====pages:' + patientListBarService.pages);
        $scope.pages = patientListBarService.pages;
    });
    $scope.$watch('patientListBarService.total', function(newVal, oldVal, scope) {
        console.log('====total:' + patientListBarService.total);
        $scope.total = patientListBarService.total;
    });
}]);

мой ctl 2:

controller('patientListCtl', ['$scope', 'patients', '$http', 'patientListBarService', function($scope, patients, $http, patientListBarService){
    console.log("----patient list ctl----");
    console.log(patients);
    patientListBarService.pages = patients.config.pages;
    patientListBarService.total = patients.config.total;
}]);

ctl1 запускается до ctl2. после запуска ctl2, ctl1

$scope.pages
$scope.total

отобразите правильное значение на моем представлении.

однако их отображение не меняется после того, как я запускаю ctl2 еще раз.

Я новичок в ng...

Кто-нибудь мне помогает? благодаря !!!

Теги:
service

1 ответ

0
Лучший ответ

Если вы переносите свои служебные данные в объект, вам не нужны часы, и значения будут синхронизироваться автоматически

.controller("Test1", function($scope, Serv){
  $scope.serv = Serv.data;

  $scope.modify = function(){
    $scope.serv.param1 = Math.random()*100;
    $scope.serv.param2 = Math.random()*100;
  }
})

.controller("Test2", function($scope, Serv){
  $scope.serv = Serv.data;
})

.factory("Serv", function(){
  var data = {
    param1: '',
    param2: ''
  }

  return {
    data: data
  }
});

jsbin

  • 0
    Это сработало!!! Я получил новый навык ~

Ещё вопросы

Сообщество Overcoder
Наверх
Меню