2016-05-17 5 views
1

Мне нужно сохранить данные на фабрике услуг после вызова ajax. Все работает без location.href. Но он не работает, когда я помещаю код строки $ window.location.href. Это код:выполнить услугу после вызова ajax в AngularJS

scope.res = function(id){ 
      factoryService.getLista(id,"en-US","") 
      .then (function(response){commonVarService.setA(response.A); 
             commonVarService.setB(response.B); 
             commonVarService.setC(response.C); 
             $window.location.href="./menu/menu.html"; 
            }) 
      .catch(function(err) {console.log(err)}); 
     }; 

Где, factoryService позволяют сделать Ajax вызов, wherease commonVarService позволяет запоминать данные в переменных сервиса. Если не существует $ window.location.href = "", все это работает, но когда есть $ window.location.href, приложение перенаправляет на новую страницу без сохранения переменной. где это моя ошибка? Есть ли хорошее решение? Спасибо заранее.

код commonVarService заключается в следующем:

angular.module ('common_variable', []) .Service ('commonVarService', функция() {

 /*a*/ 
     this.getA = function(){ 
      return this._a; 
     } 

     this.setA = function(a){ 
      return this._a=a; 
     } 

     /*b*/ 
     this.getB = function(){ 
      return this._b; 
     } 

     this.setB = function(b){ 
      return this._b = b; 
     } 

     /*c*/ 
     this.getC = function(){ 
      return this._c; 
     } 

     this.setC = function(c){ 
      return this._c = c; 
     } 

}); 

Я также попытался просто ввести строку в качестве параметра:

commonVarService.setA ("A"); commonVarService.setB ("B"); commonVarService.setC ("C")

, но когда я нахожусь в новом page.html из HREF ссылки, переменной A, B, C не определены ... Я не знаю ..

Спасибо в adavance!

+1

предоставьте исходный код setA, setB и setC. – mtamma

+0

Привет, я поставил код набора. Он работает, но когда я ставлю $ window.location.href = "", он не работает. Я не понимаю, почему .. – raoen

+0

как вы определяете свой маршрут?является одним из ваших маршрутов, используя menu.html? – mtamma

ответ

0

Издание является с областью переменных, когда вы меняете текущее местоположение страницы будет загружать все снова JS файлы, так он также будет объявлять новые переменные


«вар сервис = {}; вар _a = NULL; вар _b = null; var _c = null; "



Определить выше переменных в "LocalStorage"

т.е. к Установленное значение: localStorage.setItem ("_ а", а);
- Получить значение: localStorage.getItem ("_ a");

+0

Я следую этой статье ... http: // stackoverflow .com/questions/26594140/how-to-share-data-between-two-modules-in-angularjs ... он работает .... но когда я ставлю href ... значение не определено ... – raoen

+0

I используйте также переменную localStorage .... но я получаю Object array empty [object Object] – raoen

1

Итак, я объясняю проблему здесь, При использовании $window.location.href = 'something' . Он обновляет всю страницу, поэтому он не может сохранить переменную, восстановить новый угловой экземпляр. Я предлагаю использовать угловое или угловое ui-router, где вы можете изменить маршрут, используя это, $location.path('/profile') или $location.path('/mypage'), если вы строите SPA (одностраничное приложение), которое сохранит состояние вашей страницы ,

+0

Привет, мне нужно определить ссылку на другой странице с другим модулем Angular js, и им просто нужно разделить массив объектов ... http : //stackoverflow.com/questions/26594140/how-to-share-data-between-two-modules-in-angularjs .... находится только в другой page.html ... – raoen

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