问题陈述:
我有一个按钮"添加评论" ,我应该只在登录系统时添加评论。
但问题是我无法回到"添加评论"登录后的页面,因为我不知道以前的状态或无法获得以前的状态。
有没有更清洁的解决方案呢?我应该有登录页面模式而不是新页面吗?
我已经看到了关于以前状态的所有问题以及可能的答案(是的,我正在考虑$ roots roots和$ stateChangeSuccess)。但它没有明确提出解决方案。
其他可能的解决方案如下 http://christopherthielen.github.io/ui-router-extras/example/previous/index.html#
我也看到了 https://github.com/angular-ui/ui-router/issues/92。但同样,我不确定什么是正确的答案。
有人可以明确说明一个好的解决方案。使用rootcope是一个好的吗?
答案 0 :(得分:13)
我的登录页面是否应该是模式而不是新页面?这是一个设计决策。你可以根据自己的喜好选择任何适合你的应用程序。
是否使用了一个很好的rootcope?我觉得它是一个很好的解决方案。以下是我将如何做到这一点:
手动保存以前的状态:
创建状态更改侦听器:
$rootScope.$on('$stateChangeSuccess', function(event, to, toParams, from, fromParams) {
//save the previous state in a rootScope variable so that it's accessible from everywhere
$rootScope.previousState = from;
});
}]);
不是使用ui-sref,而是为评论按钮添加一个单击功能。
$scope.commentHandler = function(){
//check if user is logged in, let the user post the comment
//else take him to login page
}
然后,您可以在用户登录后使用$state.go($rootScope.previousState.name)
返回评论页面。
-OR -
您可以提供一个小型登录框来代替"发表评论"如果用户未登录,则按钮。
答案 1 :(得分:1)