javascript - index.html中的Angularjs双向绑定
问题描述
我是 Angularjs 的新手。我正在尝试构建一个带有登录页面的简单系统,成功登录后它将重定向到另一个页面。
我正在尝试使用 ng-view 显示 index.html 中的所有页面(包括登录页面)。我尝试使用 ng-if 来决定何时在页面顶部显示导航栏。
vm.page 的值在登录后不会改变
索引.html
<html ng-app="myApp">
<head>
<title></title>
<link href="css/bootstrap.min.css" rel="stylesheet"/>
<link href="css/custom.css" rel="stylesheet"/>
<script src="jquery/jquery-3.3.1.min.js"></script>
<script src="node_module/angular/angular.js"></script>
<script src="node_module/angular-route/angular-route.js"></script>
<script src="app.js"></script>
<script src="controllers/login-controller.js"></script>
</head>
<body>
<div ng-controller="LoginController as lg" >
<div ng-if="lg.page != 'Login'" ng-include="'view/navigation-top.html'"></div>
</div>
<div ng-view></div>
</body>
登录-controller.js
angular.module('myApp').controller("LoginController", LoginController);
function LoginController($http, $location, $scope) {
var vm = this;
vm.page = "Login";
vm.login = function(){
vm.page = "Main";
$location.path('/')
}
}
当 vm.page 启动并设置为“登录”时它正在工作,但是当我将其设置为“主”时页面不会改变。
如果有人可以帮助我,感谢您:D
解决方案
问题是您的登录功能中的$location.path('/')调用。这将导航到 /index.html 并重新初始化 LoginController。因此 vm.page 变量被重置为“登录”。
删除 location.path() 或创建一个保留页面/登录状态的服务。
推荐阅读
- python-3.x - 在 Python 中实现工厂
- flutter - Flutter,使用 MediaQuery 来调整每个小部件的大小是不是一个坏习惯?
- python - 我正在尝试为我的主菜单制作两个按钮
- javascript - 如何使用 JavaScript 显示子元素?
- python - 尽管检查,索引超出范围
- android - splashscreen android 应用程序崩溃,没有进入第二个活动
- c# - 为什么使用缺少的包不会导致 Visual Studio 抱怨我的 Azure 函数?
- clickhouse - 日期之间的前 10 名产品
- scala - 字符串拆分出错
- pandas - 使用python库(Pandas)在julia中读取制表符分隔的文本文件