2015-05-19 4 views
2

Новое в AngularJS. У меня есть контроллер signin, который проверяет детали пользователя и при успешном вызове службы сохраняет данные пользователя в localStorage, а также присваивает детали переменной в той же службе, которая используется для извлечения данных пользователя из разных представлений. Buh после входа в систему, когда я перенаправляю пользователя на другой вид, который был ранее инициирован (Visted page), я не буду видеть новые обновленные данные пользователя до тех пор, пока я не обножу страницу (представление), что означает, что представление не знает, что значение переменной пользователя в моей служба изменилась. Как мне узнать, а также изменить значение области представления.Как запустить инициированный контроллер Знайте, что значение области изменилось

ответ

3

Создание метода в контроллере для обработки обновления, то есть:

$scope.refresh = function() { 
    // Do things that load data here, probably with promises 
}; 

затем использовать это, чтобы начать загрузку вашего контроллера в первый раз, когда он смотрел, то есть вызов функции обновления в контроллере:

$scope.refresh(); 

Тогда у вас есть возможность делать такие вещи, как назначить событие, чтобы заставить данные для обновления, как (в контроллере):

$rootScope.$on("app.refresh.foo", function() { 
    $scope.refresh(); 
}); 

Тогда в другом месте, вещать, как:

$rootScope.$broadcast("app.refresh.foo"); 

И если был загружен вид, он будет вызывать функцию обновления.

Замечательная вещь об этом методе заключается в том, что у вас есть дополнительная гибкость при добавлении столько функций, сколько необходимо для функции обновления. Вам не нужно настраивать отдельных наблюдателей.

0

Вы должны определить в контроллере Бодрствующего на вашей стоимости услуги:

$scope.$watch(function() { 
     return myService.getVal(); 
    }, function(newVal, oldVal) { 
     if(newVal !== oldVal) alert("NEW VALUE"); 


    }); 
Смежные вопросы