我的离子项目中有一个sideMenu。我有一个菜单登录。在我的菜单控制器中,我有:
if (logged) {
$scope.loginText = 'Login';
}else{
$scope.loginText = 'Logout';
}
在我的菜单中,我只需在正确的菜单中添加{{loginText}}。
然后我在另一个控制器中登录。当用户登录时,我必须刷新页面才能更改文本。如何在不需要刷新的情况下更改文本?
答案 0 :(得分:1)
这是因为登录时未检测到变量记录的更改。由于它位于不同的控制器中,因此必须手动发送更改。这可以通过使用$ rootScope通过同一父控制器下的不同控制器发送消息来实现。因此必须发送消息或事件。以下代码将有所帮助。
登录后在登录控制器中。
$rootScope.$broadcast('isLOggedIn', true);
菜单控制器中的
$scope.$on('isLOggedIn', function (event, data) {
if (data) {
$scope.loginText = 'Login';
}else{
$scope.loginText = 'Logout';
}
});
记得在登录控制器中注入$ rootScope。