2016-08-22 4 views
0

При первом посещении этого сайта, на моем сайте нет cookie, поэтому мой расчет возвращает ошибку NaN. Как я могу это решить (если нет cookie, верните вместо него 0).Ошибка Cookie NaN при первом посещении

Это то, что я использую, чтобы получить печенье .....

$scope.WH1 = parseInt($cookies.get('WH1')); 
$scope.WH2 = parseInt($cookies.get('WH2')); 
$scope.WH3 = parseInt($cookies.get('WH3')); 
$scope.WH4 = parseInt($cookies.get('WH4')); 
$scope.WH5 = parseInt($cookies.get('WH5')); 

и установить его я использую .....

$scope.saveInCookie = function() { 
$cookies.put('WH1', $scope.WH1); 
$cookies.put('WH2', $scope.WH2); 
$cookies.put('WH3', $scope.WH3); 
$cookies.put('WH4', $scope.WH4); 
$cookies.put('WH5', $scope.WH5); 

Моя скрипка является http://jsfiddle.net/Lvrr0nzc/21/show

Я попробовал || 0 в коде.

ответ

2

Если нет печенья, возвращает 0 вместо

С curiously-powerful || operator:

$scope.WH1 = parseInt($cookies.get('WH1')) || 0; 
$scope.WH2 = parseInt($cookies.get('WH2')) || 0; 
$scope.WH3 = parseInt($cookies.get('WH3')) || 0; 
$scope.WH4 = parseInt($cookies.get('WH4')) || 0; 
$scope.WH5 = parseInt($cookies.get('WH5')) || 0; 

Это работает, потому что NaN является falsy и ||, так NaN || 0 является 0, так как результат || является значение его первого операнда, если это значение является правдивым, или значение второго операнда в противном случае.

Или вы могли бы использовать || ранее в процессе:

$scope.WH1 = parseInt($cookies.get('WH1') || "0"); 
$scope.WH2 = parseInt($cookies.get('WH2') || "0"); 
$scope.WH3 = parseInt($cookies.get('WH3') || "0"); 
$scope.WH4 = parseInt($cookies.get('WH4') || "0"); 
$scope.WH5 = parseInt($cookies.get('WH5') || "0"); 

Это зависит от значения от $cookies.get() быть falsy (null, undefined, ""), если куки не существует, что она, вероятно, is, и поэтому value || "0" получает либо значение из файла cookie, либо строку "0".

Но я, вероятно, воспользуюсь первым.

+0

спасибо, я положил || 0 в неправильном месте, я сделал $ scope.WH1 = parseInt ($ cookies.get ('WH1' || 0)); – Wayne

+0

Кажется, это работает на моей скрипке, но не на моей странице. http://www.ahoymearty.co.uk/basebubble/ – Wayne

+0

что я делаю неправильно ... на скрипке все работает нормально, но не на моем сайте? – Wayne

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