首页 > 解决方案 > 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

标签: javascriptangularjs

解决方案


问题是您的登录功能中的$location.path('/')调用。这将导航到 /index.html 并重新初始化 LoginController。因此 vm.page 变量被重置为“登录”。

删除 location.path() 或创建一个保留页面/登录状态的服务。


推荐阅读