Angularjs如何在不同视图的控制器中更改视图中的文本

时间:2016-03-25 18:10:46

标签: angularjs angularjs-view

我遗漏了一些非常基本的东西......

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

我的文件/代码:

的index.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');
};

}

2 个答案:

答案 0 :(得分:0)

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

其他解决方案是使用$ rootScope,但要小心处理它。

就某些与应用程序相关的信息(如用户信息)而言,老实说,基于$ rootScope的解决方案并非完全错误。

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

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

答案 1 :(得分:0)

如果您只想在标题表格登录中更改文字,则可以访问

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

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