我的控制器下面有代码片段。在我的HTML中,我有一个带有ng-checked="enterToSend"
的复选框。以及ng-click="enterToSendCheck()"
$scope.enterToSend = localStorage.getItem('enterToSend');
$scope.enterToSendCheck = function() {
$scope.enterToSend = ($scope.enterToSend == false) ? true : false;
localStorage.setItem('enterToSend', $scope.enterToSend);
}
它在本地存储中正确更新。我打开了本地存储,将其打开/关闭,并在浏览器中将其更新为true / false。
但是,在加载页面时,使用ng-checked或常规的checked属性,将对其进行检查(无论是true还是false)。为什么是这样?
最佳答案
localStorage
仅存储字符串表示形式,并且"true"
或"false"
与true
或false
不同。
$scope.enterToSend = booleanFromString(localStorage.getItem('enterToSend'));
function booleanFromString(s) {
if (s == 'true') return true;
if (s == 'false') return false;
throw new Error("Unable to convert '" + s + "' to a boolean, valid arguments are 'true' or 'false'");
}