2016-02-18 3 views
0

Мне нужно объявить массивмассив, как статический, возможно в угловых js?

и мне нужно сохранить каждый добавленный к нему элемент, который должен оставаться там навсегда, даже если страница перезагружена, возможно ли это? var arr = []; arr.push ('id');

как это, но сохраненный элемент не следует заменять.

+0

Используйте LocalStorage устанавливать и считывать значения. –

ответ

0

Вы можете использовать куки в AngularJS для поддержания значений. FYI, введите описание ссылки здесь. JSFiddle это с помощью $ cookieStore, двух контроллеров, $ rootScope и AngularjS 1.0.6. Это на JSFiddle в https://jsfiddle.net/h2fs0han/ в качестве базы, если вы возиться с этим ...

Для получения дополнительной информации см - How to access cookies in AngularJS?

<div ng-app="myApp"> 
    <div id="lastVal" ng-controller="ShowerCtrl">{{lastVal}}</div> 
    <div id="button-holder" ng-controller="CookieCtrl"> 
    <input type="text" ng-model="strText" /> 
    <button ng-click="AddItem()">Add Item!</button> 
    </div> 
</div> 

var myApp = angular.module('myApp', ['ngCookies']); 
myApp.controller('CookieCtrl', function($scope, $rootScope, $cookieStore) { 
    $scope.strText = ""; 

    $scope.AddItem = function() { 
    var lastVal = $cookieStore.get('lastValue'); 
    if ($scope.strText) { 
     if (!lastVal) { 
     $rootScope.lastVal = new Array(); //Default 
     $rootScope.lastVal.push($scope.strText); 
     } else { 
     var newItem = angular.copy(lastVal); 
     newItem.push($scope.strText); 
     $rootScope.lastVal = newItem; 
     } 
     $cookieStore.put('lastValue', $rootScope.lastVal); 
    } 
    }; 
}); 

myApp.controller('ShowerCtrl', function() {}); 
+0

Мне нужно добавить значения в массив .... –

+0

Я изменил свой ответ, чтобы добавить/показать значения в массив и извлечь его из файла cookie. Пожалуйста, проверьте JSFiddle - https://jsfiddle.net/h2fs0han/ Надеюсь, это поможет! –

+0

Что мне делать, чтобы очистить значение? –

1

Каждое угловое приложение имеет единый объем корня. Все остальные области видимости представляют собой потоки потомков корневой области.

Так один вариант должен был бы сделать это как

angular.module('test', []).run(function($rootScope) 
{   
    $rootScope.myArray = []; 
    $rootScope.myArray.push("test value"); 
}); 

Однако, говорит, что использование $ rootScope не рекомендуется, так что вы можете использовать поставщика значение в угловой.

app.value("testArray", { 
    someArray : [] 
}); 

затем вводят его в контроллер

app.controller("myController", function ($scope, testArray) { 
    $scope.someValue = testArray.someArray; 
}); 
+0

$ rootscope не работает ..... –

3

Вернуться к чертежной доске, что теперь, как работает веб :)

Если перезагрузить страницу, все потеряно, все JS-код, все значения JS-переменных и т. Д. Web не имеет аналогов по дизайну.

Есть способы достижения этого: либо хранить на сервере, либо загружать его на каждый запрос страницы или на основе браузера, которые требуют немного больше знаний, поскольку они немного более продвинуты.

О методах, основанных на браузере (на стороне клиента): один из способов, которым я могу думать, заключается в хранении ваших данных в файлах cookie. Вы можете прочитать его до here. Файлы cookie хранятся в вашем браузере и сохраняются в живых для ваших сеансов просмотра. Тем не менее, это очень хрупкий метод: люди могут легко удалить их или даже заблокировать их все вместе.

Лучший способ сделать это - HTML5 Local storage API. Попытайтесь прочитать это here или here или google it. Люди все еще могут удалить его, и он действительно привязан только к вашему индивидуальному браузеру (смените компьютеры, вы потеряли его, он локально сохранен)

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

+0

Существует довольно много технических способов сделать это, он должен сначала подумать о том, что он хочет реализовать с помощью этой системы[email protected] Prasad, если вы потерялись в этом, сообщите нам, какую функциональность вы пытаетесь реализовать, поэтому мы можем направлять вас к тому, какое техническое решение подходит для вашей проблемы. – Walfrat

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