2015-08-04 2 views
0

Я учусь Угловым, и я определил LocalStorage обслуживания как:Как позвонить услуге из другой службы в AngularJS?

.service('LocalStorage', function() { 
    var self = this; 

    this.localStorageAvailable = function() { 
     return typeof (Storage) !== "undefined"; 
    }; 

    this.set = function(key, value) { 
     if (!self.localStorageAvailable()) return; 
     localStorage.setItem(key, JSON.stringify(value)); 
    }; 

    this.get = function(key, defaultValue) { 
     if (!self.localStorageAvailable()) return defaultValue; 
     return JSON.parse(localStorage.getItem(key)); 
    }; 
}) 

Тогда я хочу, чтобы создать еще одну услугу, которая использует LocalStorage службу я только определенные, но это дает:

error: $LocalStorage is udefined.

.service('FilterSvc', ['LocalStorage', function ($LocalStorage) { 
    var self = this; 
    var key = "Settings"; 
    this.LoadSettings = function (universeCode) { 
     if ($LocalStorage.get(key, "") === "") { 
      ////load setting, otherwise reuse 
      var result = "aaa"; 
      this.set(key, result); 
     } 
    }; 
}]); 

Может кто-нибудь помочь?

+0

У вас есть заблудший '$' в имени переменного. – Jeroen

+0

Возможное дублирование - http://stackoverflow.com/questions/15313205/sharing-data-between-angularjs-services – svikasg

ответ

1

Вы должны удалить $ от переменной $ LocalStorage

+0

понял это и изменился сейчас, но когда я вызываю функцию FilterSvc.LoadSettings ('jerry'), LocalStorage становится снова не определено. мне нужно поставить LocalStorage в область или что-то еще? – daxu

+0

извините, моя вина. Понял, что пошло не так. – daxu

+0

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

0

Используйте self

var self = this; 

, а затем вызвать функцию, как показано ниже

......... 
self.servicefunction(); 
............ 

заменить this с self для всех функций; его основной причиной путаницы даже с опытными программистами.

PS: вы объявили var self = this и не использовали его

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