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