我的控制器下面有代码片段。在我的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"truefalse不同。

$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'");
}

07-24 17:26