javascript - Angularjs 根据存储在 session 存储中并存储在 $scope 中的变量动态显示/隐藏元素

标签 javascript html angularjs

我一直在搜索很多,但找不到在不刷新页面的情况下显示/隐藏元素的解决方案。这是我想要完成的任务的简化版本:

HTML:

<input ng-show="user == null" type="text" placeholder="username" ng-model="username" />
<button ng-show="user == null" ng-click="login()">Add User</button>
<div ng-show="user != null"> should show when user is defined </div>

Controller :

 $scope.login = function () {
   sessionStorage.setItem('username', $scope.username);
   $scope.user = sessionStorage.getItem('username');
 };

我能够成功获取存储在 session 存储中的用户名,但在变量存储在 sessionStorage 和 $scope.user 中后,我无法让输入消失并且 div 动态显示。

如果我登录后刷新页面,显示和隐藏就会起作用。

另一种方法是显示/隐藏登录功能中的元素,但我也不知道如何做到这一点。

有没有办法让它们动态显示/隐藏?

最佳答案

提供的代码没有任何问题。这是一个完美运行的示例,我唯一删除的是对 sessionStorage 的访问,因为出于安全原因不允许在沙箱模式下使用它。

确保您已分别声明 ng-appng-controller 指令

var app = angular.module("myApp", []);
app.controller("myController", ["$scope",
  function($scope) {
    $scope.login = function() {
      $scope.user = $scope.username;
    };
  }
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.22/angular.min.js"></script>

<div ng-app="myApp" ng-controller="myController">
  <input ng-show="user == null" type="text" placeholder="username" ng-model="username" />
  <button ng-show="user == null" ng-click="login()">Add User</button>
  <div ng-show="user != null">should show when user is defined</div>
</div>

关于javascript - Angularjs 根据存储在 session 存储中并存储在 $scope 中的变量动态显示/隐藏元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34604031/

相关文章:

javascript - 禁用iframe src的监听

javascript - Angularjs将模态 Controller 内部的表单传递给模态外部的ng-controller

javascript - 可以下载样式表并将其应用于 Angular ngBindHtml 吗?

javascript - 在 VIM 中快速切换 CoffeeScript 和 JavaScript 文件

php - 循环仅插入最后一个值

javascript - 如何使用 jquery 将数据传递/阻止到表单中

python - 为什么django表单数据提交后无法显示

Javascript 细粒度性能调整

html - 如何使背景响应不仅垂直或水平,而且两者兼而有之?

javascript - Chrome View 与打印预览之间的巨大差异