本地存储在页面重新加载后不显示值

时间:2016-12-21 10:30:06

标签: angularjs html5 local-storage html-framework-7

我正在使用angularjs进行计时器应用程序,单击时间表后计数器启动,可以通过单击添加计时器添加时间表中的新时间(弹出窗口打开然后使用时间选择器选择时间)。 将选择的时间添加到列表中以及单击“确定”按钮的本地存储。 但是当页面重新加载时,新添加的时间表中的时间没有显示,但它驻留在localStorage变量(即timeListDetails)中。 我希望每当我添加新计时器时都会显示它。

获取和设置localstorage值的代码:

$scope.getStoredTimeList = function(){
            timeList = JSON.parse(localStorage.getItem("timeListDetails")) || [];
            if(timeList != null){
              timeList.push({"hour":hour,
                                    "minutes":minutes,
                                    "seconds":seconds,
                                    "convertedSec":convertedSec,
                                    "timeFlag": true});
            }
            $scope.timeList = $scope.timeList.concat(timeList).unique();

            localStorage.setItem("timeListDetails", JSON.stringify(timeList));
          }

我已经完成了我的完整例子。 Clock Application review

请告诉我解决方案。

2 个答案:

答案 0 :(得分:1)

这是因为在页面重新加载或初始化应用程序时,您没有调用getStoredTimeList方法。 方法:

getStoredTimeList()

仅在执行时执行  sibmit()

您应首先在应用初始化时从localStorage恢复值。

答案 1 :(得分:1)

当重新加载页面时$ scope.timeList值迭代重复你在控制器中给出的内容。

我的想法只是比较localStorage.getItem(“timeListDetails”)和$ scope.timeList,如果不同,你可以使用localstorage并分配给$ scope.timeList,否则让它成为值。

简单的例子..

RailsAdmin.config do |config|

 config.actions do
  dashboard                     # mandatory
  index                         # mandatory
  new
  export
  bulk_delete
  show
  edit
  delete
  show_in_app
 end

 config.authorize_with do |controller|
  redirect_to main_app.root_path unless current_user &&    current_user.admin
 end
end

也在这里更改..第一次发生当你试图推动任何一个值未定义如秒。我认为(小时或分钟或秒)未定义会给出问题。

$scope.timeList = [
                  {"hour":0, "minutes":1, "seconds": 6},
                  {"hour":0, "minutes":3, "seconds": 180},
                  {"hour":0, "minutes":5, "seconds": 300}];
 var temp = JSON.parse(localStorage.getItem("timeListDetails"));
            var checkObj = angular.equals($scope.timeList, temp);
            if(!checkObj){
              angular.copy(temp, $scope.timeList);
            }

根据您的需要,使用其他方式..