【问题标题】:How to show/hide a div using angularjs如何使用 angularjs 显示/隐藏 div
【发布时间】:2016-01-05 11:47:57
【问题描述】:

当我单击隐藏按钮时,我试图隐藏一个 div。但是,如果我单击显示按钮,我无法显示一个 div。我一次只能执行一个操作。

如果我设置“$scope.showDiv = false;”默认情况下,即使使用以下代码,我也无法显示 div:

 $scope.getShow = function() {
            $scope.showDiv = true;
            window.location = "./sample.html";
        }

谁能帮我解决这个问题...

我的html代码:

<div ng-if="showDiv">Hello</div>
<button style="margin-left: 22px; margin-top: 16px; background-color: #73AD21"
ng-click="getShow()">Show</button>
<button style="margin-left: 22px; margin-top: 16px; background-color: #73AD21"
ng-click="getHide()">Hide</button>

我的js代码:

$scope.showDiv = false;
$scope.getShow = function() {
        $scope.showDiv = true;
        window.location = "./sample.html";
    }
$scope.getHide = function() {
        $scope.showDiv = false;
        window.location = "./sample.html";
    }

我正在尝试从主页访问主页。当我单击主页中的显示按钮时,它应该重定向到主页并显示 div。当我单击主页中的隐藏按钮时,它应该重定向到主页并隐藏 div。这是我目前无法执行的操作。

【问题讨论】:

  • 使用 ng-show 代替 ng-if
  • 但是你为什么要在 getShowgetHide 函数中使用 window.location 重定向?
  • 你为什么到处都有window.location = "./sample.html";?删除它,它应该可以正常工作。
  • 如果你改变位置,你就是在告诉浏览器:删除你知道的关于这个页面的所有内容,下载这个新页面并从头开始。首先,您不应该使用 window.location 在单页 Angular 应用程序的视图之间导航。第二:如果这样做,您实际上会关闭当前应用程序,加载一个新页面,这可能会启动一个新应用程序。第三,即使您使用角度路由器正确导航,您也无法控制另一个视图某些部分的可见性。我认为你需要阅读一个好的 Angular 教程,因为你不了解 Angular 的基本原理。
  • 收听@JBNizet。这是一个太大的错误,无法得到答案。您应该阅读有关角度路由的信息。另请记住,一个视图(一页)中的更改不会保存到另一个视图。每个页面都有一个单独的范围。 ng-if="showDiv" 实际上是指不同范围的$scope.showDiv。看看角度范围和角度路由的基础知识,祝你好运!

标签: angularjs


【解决方案1】:

正如人们在你打电话后在 cmets 中提到的那样

window.location = "./sample.html";

页面可能会重新加载,代码从

开始
$scope.showDiv = false;

再次调用。因此,当 showDiv 变量始终为 false 时,您处于循环状态。

您可能想要更改的是在开头设置 if 语句

if(window.location == "./home")
    $scope.showDiv = true;
if(window.location == "./main")
    $scope.showDiv = false;

【讨论】:

  • 在主页中,我没有那个div。我只是在主页中有一个显示和隐藏按钮。在主页中,我有一个div。如果我点击主页中的显示按钮页面,它应该在主页中显示一个 div,反之亦然。
  • 所以在主页上你隐藏了带有 ng-if="false" 的 div 和按钮?在主页上 ng-if="true" 没有按钮?我现在很困惑:)
  • 在主页中,我没有任何div,我只有两个按钮。在主页中我有一个div,当单击显示按钮时,我需要在主页中显示它从主页,反之亦然
  • 2 页意味着每个页面都有 html 文件,并且您正在使用 window.location.href 在它们之间切换,对吗?或者你有一个html?
  • 是的。我有两个 html 文件,我正在使用 window.location 在它们之间切换
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-05
  • 2014-01-03
相关资源
最近更新 更多