$cookieStore не сохраняет данные для следующей итерации метода
У меня есть приложение, где у меня есть флажки для каждого элемента (конфигурации) из массива (configurationsArray). То, что я хочу реализовать, это добавить конфигурацию в хранилище cookie, когда установлен флажок
Вот мой код
$scope.addProjectConfig = function(configuration, projectName) {
var configs = $cookieStore.get('projectsToCompare');
if(!configs) {
$cookieStore.put('projectsToCompare', new Array());
configs = $cookieStore.get('projectsToCompare');
}
if(configuration.addedToCompare) {
var configObject = {projectName: projectName, configuration: configuration};
configs.push(configObject);
$cookieStore.put('projectsToCompare', configs);
}
var configs1 = $cookieStore.get('projectsToCompare');
};
Если вы видите в конце, я пытаюсь получить материал, который я поместил в cookieStore, и он работает отлично.
Однако, когда установлен другой флажок и метод выполняется снова, я вижу, что значение, возвращаемое в начале, имеет пустой массив. Что я здесь не так делаю? Любые указатели высоко ценятся.
1 ответ
Одна из возможных причин поведения, которое вы наблюдаете, заключается в том, что размер вашего файла cookie превышает ограничение размера файла cookie для вашего браузера.
Узнайте больше об ограничениях размера файлов cookie здесь и здесь.
Выдержки из второй ссылки
Согласно RFC 2109, веб-куки не должны быть ограничены пользовательскими агентами. Но минимальные возможности браузера или пользовательского агента должны составлять не менее 4096 байт на файл cookie. Это ограничение применяется только к части имени = значения файла cookie.
Это означает, что если вы пишете cookie, а размер cookie меньше 4096 байт, то он будет поддерживаться каждым браузером и пользовательским агентом, который соответствует RFC.
Ограничения размера файлов cookie для различных браузеров
- Internet Explorer 8 разрешил файлы cookie размером до 4095 байт
- В Chrome 9 разрешено использование файлов cookie размером до 4096 байт
- Opera 11 допускает файлы cookie размером до 4096 байт
- Firefox 3.6.3 разрешает файлы cookie размером до 4097 байт
- Safari 5 позволяет создавать файлы до 4097 байт
Вы можете проверить ограничение размера cookie вашего браузера, перейдя по этой ссылке и нажав
Выполнить тесты для текущего браузера
Так что, если это действительно так, то вам нужно уменьшить размер файлов cookie. Если вы не хотите этого делать и предполагаете, что разрабатываете для HTML5, есть другие простые способы решения этой проблемы.
Если вы хотите сохранить данные только для этого сеанса, используйте sessionStorage, иначе используйте localStorage. Узнайте больше о sessionStorage и localStorage здесь