使ng-show/ng-hide与由Angular之外的外部源修改的localStorage一起工作
Making ng-show/ng-hide work with localStorage being modified by external sources outside of Angular?
这是我的登录覆盖的顶级控制器。
login.controller('main_controller', ['$scope', function ($scope) {
$scope.shouldShowLoginOverlay = function () {
return (null == localStorage.getItem("auth_token"));
}
}]);
这是相应的HTML。
<div ng-controller = "main_controller" ng-show="shouldShowLoginOverlay()"></div>
登录后,我在localstorage中设置auth_token,覆盖就会自动消失。我尝试使用removeItem删除chrome资源部分的条目,甚至删除JS控制台。在这种情况下,覆盖不会自动出现!我是刚接触棱角分明的人,我缺少什么?
您可以尝试类似的东西
view.html
<p align="center" ng-show="yourFunction() == true">will show when you had something valued as True on local storage</p>
controller.js
$scope.yourFunction = function() {
return localStorage.getItem("your_local_storage")
}
试试这个
<div ng-controller = "main_controller" ng-show="isAuthenticated" ng-init="shouldShowLoginOverlay()"></div>
并将控制器更改为:-
login.controller('main_controller', ['$scope', function ($scope) {
$scope.shouldShowLoginOverlay = function () {
$scope.isAuthenticated = (null == localStorage.getItem("auth_token"));
return $scope.isAuthenticated;
}
}]);
此外,我建议使用服务或工厂来实现登录身份验证模块。
可以通过向覆盖中添加类来尝试不同的问题解决方案。类似于,.show {
display: block;
}
.hide {
display: none;
}
我有一把小提琴给你。
请尝试以下伪代码
<body ng-controller="test">
<div ng-show="istrue">fadf</div>
<input type="button" ng-click="addItem()" value="add" />
<input type="button" ng-click="removeItem()" value="Remove" />
<script>
var myApp = angular.module("MyApp", ["ngAnimate"]);
myApp.controller('test', function ($scope) {
alert(localStorage.getItem("auth_token"));
$scope.$watch(function () {
return (null != localStorage.getItem("auth_token"));
}, function (newvalue, oldvalue) {
$scope.istrue=newvalue
});
$scope.addItem = function () {
var testObject = { 'one': 1, 'two': 2, 'three': 3 };
localStorage.setItem('auth_token', JSON.stringify(testObject));
}
$scope.removeItem = function () {
localStorage.removeItem('auth_token');
}
});
</script>
</body>
相关文章:
- 在外部声明的变量和XMLHttpRequest中修改的变量的值在此Ajax请求之外不可见
- 使用load()加载外部文件,然后使用fancybox插件进行修改并显示
- 修改函数以从类外部访问私有变量
- 使ng-show/ng-hide与由Angular之外的外部源修改的localStorage一起工作
- Polymer:当数组中的对象被外部代码修改时,更新dom重复元素
- JavaScript - 是否可以修改第三方脚本(外部托管)使用的 setInterval/setTimeout 的行为
- 从AJAX函数中修改外部变量
- Jquery:如何从内部到外部修改项
- 从forEach回调中修改外部数组变量
- 防止HTML被外部代理或蜂窝提供程序修改
- 从外部站点修改html的Javascript
- 保护封闭内的对象不被从外部修改
- 不能在循环内部修改在循环外部声明的数组
- 分组ng-repeat和修改DOM外部指令
- 在Angular中修改外部模板
- 是否可以在应用外部修改本地存储值
- 节点JS可以在for循环期间通过外部函数修改数组
- 如何修改由外部 JavaScript 创建的元素上的类
- 文件上传:如何上传外部云文件夹中的文件,javascript修改
- 我可以修改外部URL的HTML DOM使用窗口打开