我遗漏了一些非常基本的东西......
我在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');
};
}
答案 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")
并设置新文本,或者您可以使用服务。服务你不应该登录和标题控制器。