我正在使用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
请告诉我解决方案。
答案 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);
}
根据您的需要,使用其他方式..