2016-01-28 3 views
2

У меня есть этот HTMLИспользование ngStorage (angularjs) для варианта языка

<button class="btn btn-info" ng-click="setLanguage('en')">English</button> 
<button class="btn btn-info" ng-click="setLanguage('de')">Danish</button> 
<p>{{name[language]}}</p> 

и код JavaScript

$scope.language='en'; //initial default value 
$scope.setLanguage = function(language) { 
    $scope.language = language;  
    } 

я Binding язык кнопки для 2 languages.based на выбранном языке, содержание будет показано. как хранить en или de в localstorage. если я обновляю или изменяю страницу, язык набора должен быть таким же. как это сделать. кто может мне помочь Здесь находится плункер http://plnkr.co/edit/zHMvBWCKevKgGeBerhhE?p=preview

+0

Вы ищете 'localStorage.setItem (ключ, значение)' и 'localStorage.getItem (key)'? Я не знаю, зачем вам нужно ngStorage, если вы просто хотите использовать localStorage. – AntiHeadshot

+0

Нет, но то же самое. Я использовал ngStorage. https://github.com/gsklee/ngStorage, но я не знаю, как его использовать. Если вы можете сказать мне по-своему. который вы сказали выше, это тоже нормально –

ответ

1
// Getter 
if ($window.localStorage.language) { 
    $scope.language = $window.localStorage.language; 
} else { 
    $scope.language = 'en'; 
} 


// Setter 
$scope.setLanguage = function(language) { 
    $scope.language = language; 
    $window.localStorage.language = language; 
} 

Чтобы проверить переменный ресурс как куки, местное хранилище и т. д. Под хромом инструменты разработчика (доступ с F12) перейдите на вкладку Resources.

+0

Нужно ли ngStorage или без этого –

+0

Нет. Он отлично работает без него :) Вам просто нужно ввести '$ window'. Но вы также можете использовать 'window'. –

+0

Спасибо за информацию, но она не сработала. Я проверил локальное хранилище в ресурсах, он обновляется после обновления страницы. он не был изменен –

1

ng-storage Удивительно простой.

Inject ngStorage в ваш основной модуль и $localStorage к вашему контроллеру.

$scope.setLanguage = function(language) { 
    $scope.language = language;  

    $localStorage.language = language; 

    } 

Если необходимо сохранять данные по Освежает, думать об использовании ng-cookies.

Inject ngCookies в ваш основной модуль. Также вставьте в ваш контроллер $cookies.

Затем вы можете использовать $cookies.put и $cookies.get для хранения и извлечения данных.

$scope.setLanguage = function(language) { 
    $scope.language = language;  

    $cookies.put('language', language); 

    } 

Также обратите внимание, что вы должны использовать cookie expiry date для установки TTL.

+0

Я уже пробовал, но он не работает, если я обновляюсь, он снова перейдет в en. есть ли способ проверить хром, хранится ли он в localstorage –

+0

Возможно, вы должны использовать $ cookies –

+0

Его часть угловых js. Прилагается как дополнительный модуль. (