1

我错过了一些非常基本的东西......

我在 angularJS 中创建了三个视图:页眉、正文和页脚。我想在成功登录时将标题中的文本从登录更改为注销,在用户注销时也从注销更改为登录。

我的文件/代码:

索引.php:

    <div ui-view="header"></div>
    <div ui-view="main"></div>
    <div ui-view="footer"></div>

header.page.html (我想我想要 ng-bind 或 {{some var}} )

    <li><a href="#login" >Login</a></li>

login.component.js(不确定如何获取 header.page.html 的值)

    login(){
        var user = {
            company: this.company,
            username: this.username,
            password: this.password
        };
        var me = this;
        this.$auth
            .login(user)
            .then(function (response) {
                me.$auth.setToken(response.data);


// CHANGE LOGIN TO LOGOUT IN HEADER



                me.$state.go('app.dashboard');
            })
            .catch(function (response) {
                console.log("error response", response);
            })
    };

以及注销功能(不确定如何获取 header.page.html 的值)

function dashboardController($state, $scope, $auth){
$scope.isAuthenticated = function () {
    return $auth.isAuthenticated();
};
document.title = "Dashboard";
$scope.logout = function () {
    $auth.logout();

    //change Logout To Login text in header

    $state.go('app.home');
};

}

4

2 回答 2

0

您可以使用 $broadcast、$emit 和 $on。更多细节在:https : //docs.angularjs.org/api/ng/type/$rootScope.Scope

其他解决方案是使用 $rootScope,但要注意污染它。

至于一些应用相关的信息,比如用户信息,老实说,基于 $rootScope 的解决方案并不是完全错误的。

您绝对应该避免使用 $rootScope 获取特定于功能的信息。

我会更多地研究如何使用广播来做决定。

于 2016-03-25T18:42:54.227 回答
0

如果您只想更改标题表单登录中的文本,您可以访问您的

<li><a id="login" href="#login" >Login</a></li>

像这样:document.getElementById("login")并设置新文本,或者您可以使用服务。您应该不提供登录和标头控制器的服务。

于 2016-03-26T14:30:40.390 回答