如何在AngularJS中使用<select>从数组中进行选择,然后将该值存储在localStorage中?</select>

时间:2013-08-29 13:09:27

标签: angularjs

我创建了以下内容:

    $scope.option.questionOrderBy = [
    { label: 'PId', key: ['problemId', 'QuestionId'] },
    { label: 'QId', key: 'questionId' },
    { label: 'Modified By', key: 'modifiedBy' },
    { label: 'Modified Date', key: 'modified' },
    { label: 'Status', key: 'questionStatusId' },
    { label: 'Title', key: 'title' }
    ];

并在此处使用:

    <select
       data-ng-model="option.selectedQuestionSort"
       data-ng-options="o.label for o in option.questionOrderBy">
       <option style="display: none" value="">Select Sort Order</option>
    </select>

并在我的HTML中:

     data-ng-repeat="row in grid.data | orderBy:option.selectedQuestion.key">

这有效,但我想使用本地存储来记住排序的价值。

当我尝试存储“option.selectedQuestionSort”时,这是一个数组!

有没有办法可以更改上面的内容,以便我可以在localstorage 中存储值,而不是为option.selectedQuestionSort存储数组。然后,当我的代码启动时 可以获得值并让select显示正确的选择吗?

请注意,这是我存储在本地存储中的代码:

    $scope.$watch('option.selectedQuestionSort', function () {
        if ($scope.option.selectedQuestionSort != null ) {
            localStorageService.add('selectedQuestionSort', $scope.option.selectedQuestionSort);
        }
    })

问题是$ scope.option.selectedQuestionSort是一个数组,所以我认为我不能正确存储。

1 个答案:

答案 0 :(得分:1)

在存储数据时使用JSON.stringify(object)(适用于对象和数组,但对于带有循环引用的项可能会失败,这不是这种情况)。

当您想要获取数据时,需要将其转换回对象(或数组)格式,使用返回对象的JSON.parse(string)

因此,您的localStorage服务应该是:

localStorageService.add('selectedQuestionSort', JSON.stringify($scope.option.selectedQuestionSort));

当你拿出来的时候:

selectedOption = JSON.parse(localStorageService.get('selectedQuestionSort'));