【问题标题】:Angularjs dynamically show / hide an element based on a variable stored in session storage and stored on $scopeAngularjs 根据存储在会话存储中并存储在 $scope 上的变量动态显示/隐藏元素
【发布时间】:2016-01-05 12:26:45
【问题描述】:

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

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>

控制器:

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

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

如果我在登录后刷新页面,显示和隐藏确实有效。

另一种方法是在登录功能中显示/隐藏元素,但我也不知道该怎么做。

有没有办法让这些动态显示/隐藏?

【问题讨论】:

  • 能否提供codepen sn-p或jsfiddle code sn-p?
  • @PareshGami 我现在会处理它
  • 是的,请提供相同的,以便我可以帮助您
  • 这段代码没有明显的问题; ng-show 应该动态更新,除非您的 user 变量在不同的范围内;就其价值而言,在使用基元而不是对象时,这绝对是可能的,但在没有看到更多 HTML 和控制器结构的情况下,尚不清楚在您的情况下是否会发生这种情况。

标签: javascript html angularjs


【解决方案1】:

提供的代码没有问题。这是一个完美运行的示例,我唯一删除的是对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>

【讨论】:

  • 这段代码很有帮助,我不确定是什么修复了它,但确实有一些效果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-08
  • 2011-01-20
  • 2016-03-14
  • 1970-01-01
  • 2020-03-15
相关资源
最近更新 更多