2017-02-05 10 views
1

Мне нужно нажать значение в массиве и сохранить в файлах cookie при нажатии кнопки GO.Как сохранить и получить значения массива в файле cookie с Угловой версией 1.5

Если значение больше 10, мне нужно удалить первый добавленный элемент в массиве и обновленные файлы cookie, отображаемые в конце.

но я попробовал несколько способов некоторое время, когда я получаю значения, иногда нет, код не работает последовательно.

пожалуйста, найти ниже код

var cookieName = 'orderList'; 
$scope.orderList = $cookies.getObject(cookieName) || []; 
$scope.saveCookie = function (val) { 
    if ($scope.orderList.length >= 10) { 
     $scope.orderList.shift(); 
    } 

    $scope.orderList.push({productName: val}); 
    $scope.orderList = $cookies.putObject(cookieName,$scope.orderList); 
    } 

Примечание: Я использую угловую 1.5 и 1.5 версии печенья .И я получаю сообщение об ошибке консоли.

http://plnkr.co/edit/K17uJv72U2ytG6JHZBtn?p=preview

ответ

1

Вы не понимали одну вещь. Ошибка появляется только при повторном нажатии кнопки. Причина, почему вы получаете эту ошибку последняя строка в вашем code-

$scope.orderList = $cookies.putObject(cookieName,$scope.orderList);

при замене его -

console.log(typeof $cookies.putObject(cookieName,$scope.orderList));

вы получите undefined в консоли , И это уловка. Когда функция выполняется во второй раз, она оценивает length от undefined и, следовательно, ошибку.

Просто замените строку на $cookies.putObject(cookieName,$scope.orderList), потому что ваш $scope.orderList уже равен массиву с новым значением, нажатым.

EDIT: Обновленный код

var cookieName = 'orderList'; 
$scope.saveCookie = function (val) { 
    $scope.orderList = $cookies.getObject(cookieName) || []; 
    if ($scope.orderList.length >= 10) { 
     $scope.orderList.shift(); 
    } 

    $scope.orderList.push({productName: val}); 
    $cookies.putObject(cookieName,$scope.orderList); 
} 

Я привел определение $scope.orderList внутри функции, так как, в случае, если значение этого теряется, он будет пересчитывать на каждую кнопку мыши. Это не важно во всех случаях. Вы можете оставить его вне функции, в зависимости от вашего потока приложений.

+0

Могу ли я удалить последнюю строку? – CodeMan

+0

@CodeMan Вы хотите удалить полностью? Это ваше желание. Но тогда значение 'cookieName' не будет равно' orderList'. –

+0

может обновить код, потому что я застрял в последние пару часов ... – CodeMan