Javascript 如何使用angularjs持久化打开的div框
下面的代码非常有效。它可以打开和关闭弹出消息框 现在,我想确保任何打开的弹出框都会根据其Id在页面刷新时保持不变。我想这是localstorage的工作 在jquery中,我可以使用下面的代码来完成Javascript 如何使用angularjs持久化打开的div框,javascript,angularjs,popup,local-storage,Javascript,Angularjs,Popup,Local Storage,下面的代码非常有效。它可以打开和关闭弹出消息框 现在,我想确保任何打开的弹出框都会根据其Id在页面刷新时保持不变。我想这是localstorage的工作 在jquery中,我可以使用下面的代码来完成 <!doctype html> <html> <head> <title></title> <style> .contact_box { bottom: -5px; height:200px
<!doctype html>
<html>
<head>
<title></title>
<style>
.contact_box {
bottom: -5px;
height:200px;
background: black;
color: red;
border-radius: 5px 5px 0px 0px;
display: inline-block;
position: fixed;
width: 500px;
bottom: 0%
}
</style>
<script src='jquery-3.1.1.min.js' type='text/javascript'></script>
<script>
$(document).ready(function(){
var persist = localStorage.getItem('persist');
if(persist === 'true'){
$('#mydiv').show();
}
$("#display").click(function(event){
event.preventDefault();
$('#mydiv').show();
localStorage.setItem('persist', 'true');
});
$("#close").click(function(event){
event.preventDefault();
localStorage.removeItem('persist', 'false');
$('#mydiv').hide();
});
});
</script>
<div id="mydiv" class="contact_box" style="display:none;" >
<br> Message ....</br>
<br> Message ....</br>
<br> Message ....</br>
<br> Message ....</br>
<br> Message ....</br>
<br> Message ....</br>
</div>
<h1>Refresh Page after you click on persist button</h1>
<input type="button" value="Persist" id="display"/>
<input type="button" value="close" id="close"/>
</body>
</html>
下面是Angularjs代码,它显示了各种用户的弹出框
从stackOverflow运行此处的代码段时,从“窗口”读取“localStorage”属性时将出现错误:文档已沙盒,并且缺少“允许相同来源”标志 在你的本地电脑上运行,在那里应该可以正常运行 var-app=angular.module'myapp',[]; 应用程序控制器'MainCtrl',函数$scope{ //流行歌手 $scope.popIt=functionid{ 如果$scope.arr[id].popStatus==true{ $scope.arr[id].popStatus=false }否则{ $scope.arr[id].popStatus=true; } console.log$scope.arr; $scope.updateLocalStorage; } //隐藏消息框 $scope.hideUnhideIt=functionid{ $scope.arr[id]。hideBox==true?$scope.arr[id]。hideBox=false:$scope.arr[id]。hideBox=true; $scope.updateLocalStorage; } //在初始化时调用,如果存在数组,则从本地存储读取 $scope.checkAndInitiateFromLocalStorage=函数{ var readArrayStr=localStorage.getItem'MessaginArray'; 如果readArrayStr&&readArrayStr.length>0{ $scope.arr=JSON.parsereadArrayStr; }否则{ $scope.arr=[{ 姓名:user1, popStatus:false, 墨守成规:错误 }, { 姓名:user2,, popStatus:false, 墨守成规:错误 }, { 姓名:user3,, popStatus:false, 墨守成规:错误 }, { 姓名:user4, popStatus:false, 墨守成规:错误 } ]; } } //在每次更新时调用,将最新状态存储在localstorage中 $scope.updateLocalStorage=函数{ setItem'MessaginArray',JSON.stringify$scope.arr; /*console.logupdated本地存储*/ } $scope.checkAndInitiateFromLocalStorage; }; .侧边栏{ 宽度:20%; 位置:固定; 身高:100%; 右:0px; 顶部:0px; 填充顶部:50px; 垫底:10px; 边框:1px实心B2B2; 文本对齐:底部对齐; } .主要地区{ 位置:固定; 宽度:80%; 底部:0% } .联络电话亭{ 位置:相对位置; 底部:-5px; 宽度:250px; 背景:黑色; 颜色:红色; 边界半径:5px 5px 0px 0px; 底部:0px; 显示:内联块; } {{ret.name} 关 隐藏/取消隐藏 用户名:{{ret.name} 消息 消息 消息 消息 消息 消息
// Persist any opened message box Div after page refresh using local storage
$scope.persistDiv = localStorage.getItem($scope.arr);
$scope.persistIt = function(id) {
if ($scope.arr[id].popStatus == true) {
$scope.arr[id].popStatus = false;
// set Local Storage for any open popup box via Id
localStorage.setItem(persistDiv);
} else {
$scope.arr[id].popStatus = true;
//remove local storage when a particular popup box is close
localStorage.removeItem(persistDiv);
}
}
<!doctype html>
<html ng-app="myapp">
<head>
<title></title>
<style>
.sidebar {
width: 20%;
position: fixed;
height: 100%;
right: 0px;
top: 0px;
padding-top: 50px;
padding-bottom: 10px;
border: 1px solid #b2b2b2;
text-align: bottom;
}
.mainArea {
position: fixed;
width: 80%;
bottom: 0%
}
.contact_box {
position: relative;
bottom: -5px;
width: 250px;
// height:auto;
background: black;
color: red;
border-radius: 5px 5px 0px 0px;
bottom: 0px;
//right: 270px;
display: inline-block;
}
</style>
<script src="jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.7.6/angular.min.js"></script>
<script>
var app = angular.module('myapp', []);
app.controller('MainCtrl', function($scope) {
$scope.arr = [
{ name: "user1", popStatus: false, hideBox: false },
{ name: "user2", popStatus: false, hideBox: false },
{ name: "user3", popStatus: false, hideBox: false },
{ name: "user4", popStatus: false, hideBox: false }
];
//pop div
$scope.popIt = function(id) {
if ($scope.arr[id].popStatus == true) {
$scope.arr[id].popStatus = false
} else {
$scope.arr[id].popStatus = true;
}
}
//hideUnhide message box
$scope.hideUnhideIt = function(id) {
($scope.arr[id].hideBox == true) ? $scope.arr[id].hideBox = false: $scope.arr[id].hideBox = true;
}
});
</script>
</head>
<body>
<div ng-app="myapp" ng-controller="MainCtrl">
<div class="sidebar">
<ul>
<li ng-repeat='ret in arr track by $index'>
<div ng-click="popIt($index)">
{{ret.name}}
<!-- hide:{{ret.hideBox}} -->
<br><br>
</div>
</li>
</ul>
</div>
<div class='mainArea'>
<ng-controller ng-repeat='ret in arr track by $index'>
<div ng-if="ret.popStatus == true" class="contact_box">
<button style="float:right" ng-click="popIt($index)">Close</button>
<button style="float:left" ng-click="hideUnhideIt($parent.$index)">hide/unhide</button>
<br>
<div ng-if="!ret.hideBox" style="height:auto;">
<b>Username:</b> {{ret.name}}
<br>Message .........<br>
<br>Message .........<br>
<br>Message .........<br>
<br>Message .........<br>
<br>Message .........<br>
<br>Message .........<br>
</div>
</div>
</ng-controller>
</div>
</div>
</body>
</html>