Как получить доступ к обновленному значению в разных контроллерах страниц?

0

У меня есть проблема с обновлением значения между различными контроллерами страниц. Вот ситуация.

page1.html

<body ng-app="app">
<div  ng-controller="ctrl1">{{ version }}</div>
</body>

page2.html

<body ng-app="app">
<div  ng-controller="ctrl2">{{ version }}</div>
</body>

app.js

 var app = angular.module("app", []);

 app.run(function($rootScope) {
   $rootScope.Data = [];
   $rootScope.Data.Version = '1.0.0.1';
 });

  app.controller('ctrl1', function($scope, $rootScope){
   $scope.version = $rootScope.Data.Version;
   $rootScope.Data.Version = '1.0.0.2';
  });

 app.controller('ctrl2', function($scope, $rootScope){      
   $scope.version = $rootScope.Data.Version;
 });

результат

version: 1.0.0.1 // page1.html 
version: 1.0.0.1 // page2.html 

ожидаемый результат

version: 1.0.0.1 // page1.html 
version: 1.0.0.2 // page2.html 

Как добиться такого рода ситуации?

Я попытался использовать $broadcast из этого руководства для отдельных контроллеров страниц: скрипка

Теги:
angular-broadcast
angularjs-rootscope

3 ответа

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

Вы не можете просто перезагружать страницы, не теряя всех своих данных, вы это знаете? Ваш $rootScope умирает, все умирает... :) Ваш пример совершенно неправильный. Либо используйте SPA-маршрутизацию, которая не заставляет перезагружать браузер, или использует некоторый тип локального хранилища для обеспечения безопасности данных.

Также я заметил, что вы привязываетесь к примитивам $scope.version = $rootScope.Data.Version; - не делайте этого, используйте $scope.data = $rootScope.Data; а затем {{data.Version}}. В любом случае вы не должны использовать $ rootScope.

  • 0
    @smaji, спасибо большое. Я знаю, если страница перезагрузит данные, которые я потеряю, но моя ситуация, я должен перенаправить между страницами. Я попробовал файлы cookie, которые работают, но если я сохраню переменную cookie в page1.html (например: cookie_name = "value1"), я смогу получить доступ к page2.html, если я хочу установить другое значение для тех же файлов cookie переменная (например: cookie_name = "value2"), после сохранения из page1.html я не могу получить доступ к последней обновленной.
  • 0
    Я думаю, я должен использовать ngStorage для локального хранения.
Показать ещё 1 комментарий
0

Вы знаете, что я нашел после использования Angular в течение 2 лет, что использование прямых переменных, таких как $ scope.version, не является лучшим для Angular, потому что они добавляют разные часы, и в вашем случае вы переписываете экземпляр "версии".

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

    var state = {
        version: $rootScope.Data.Version,
        anyOtherVariable: value
    };
    $scope.state = state;
0

Передайте значения между использованием контроллера и методом on. обратитесь к ссылке http://www.dotnet-tricks.com/Tutorial/angularjs/HM0L291214-Understanding- $ emit, - $ broadcast-and- $ on-in-AngularJS.html

  • 0
    Но у меня есть разные страницы для контроллеров
  • 0
    сначала создайте переменную в методе фабрики, затем вызовите широковещательную передачу.

Ещё вопросы

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