2017-01-09 3 views
0

В моем приложении пользователь устанавливает свой пол в первом представлении, и я храню его в localStorage.Угловой: передать переменную из вида в другую

$scope.setGender = function(gender){ 
    $scope.data.gender = gender; 
    localStorage.setItem('paramGender', $scope.data.gender); 
} 

Затем пользователь переходит на второй взгляд и прочитать его пол в коде, прочитав LocalStorage:

$scope.data.gender = localStorage.getItem("paramGender")); 

Но если пользователь возвращается к первому мнению, изменить его/ее пол и восходит ко второму виду, $scope.data.gender не обновляется во втором контроллере.

Как я могу достичь этого без перезагрузки всего второго вида (мне нужно сохранить кеш, потому что это второе представление тяжелое)?

Благодаря

+0

Почему не просто обновить локальное хранилище, чтобы отразить изменение пола? Вы можете обновить отдельные элементы. –

+0

Да, это то, что я делаю, я запускаю '$ scope.setGender', оставив первый вид, но контроллер js второго представления не выполняется повторно, потому что он находится в кеше – Louis

+0

Что вы имеете в виду контроллер в кеше? – digit

ответ

0

Я бы просто использовать событие в этом случае и обслуживание.

app.factory('GenderService', [function() { 
    var self = this; 
    self.gender = null; 

     return { 
     setGender: function(gender) { 
      self.gender = gender; 
     }, 
     getGender: function(){ 
      return self.gender; 
     } 
    } 
}]); 

$scope.setGender = function(gender){ 
    $scope.data.gender = gender; 
    GenderService.setGender(gender); 
    $rootScope.$broadcast('genderUpdated', gender); 
} 

затем в вашем другом контроллере:

$scope.data.gender = GenderService.getGender(); 
    $scope.$on('genderUpdated', function(event, data){ 
     $scope.data.gender = data; 
    }) 

С уважением,

+0

Спасибо, но, похоже, он не будет работайте «в первый раз» (когда второе представление еще не загружено), не так ли? – Louis

+0

@ Луис, вы правы. Я обновил свой ответ –

+0

ok Большое спасибо, не так ли просто, чтобы просто поместить переменную на корнеобзор? – Louis

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