ng-checked从localstorage获取时不识别true / false

时间:2014-11-18 21:31:11

标签: javascript angularjs

我的控制器里面有下面的代码片段。在我的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);
}

它在localstorage中正确更新。我打开localstorage,打开/关闭它,并在我的浏览器中更新为true / false。

但是,在加载页面时,使用ng-checked或常规checked属性,会检查它(无论是真还是假)。这是为什么?

1 个答案:

答案 0 :(得分:3)

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