使用基于应用程序状态/数据的UI-Router

时间:2015-11-12 15:07:32

标签: javascript angularjs angular-ui-router

是否可以根据数据条件使用Angulars ui-routing?例如,假设我需要实现某种订阅流程。最终,用户看到一个页面告诉他订阅是否成功。

但在流程中,基于数据,需要做出决策。例如:如果用户已经登录,我们需要知道他将用于订阅的电子邮件地址,并且用户会收到一个要求他收到电子邮件的视图。如果未登录,则用户将获得登录/注册屏幕。

花了一些研究才意识到“状态”实际上是一种观点,所以谷歌搜索状态给了我错误的结果。我也遇到了this here (我觉得这是一个类似的情况)。在评论中有一个指向here的链接 但我无法弄清楚这是否真的是我需要的。

所以,简单地说:我可以使用ui-router并根据数据条件更改页面视图,例如:

/* this could be set by an ng-init directive */
$scope.isLoggedOn = false;

 ... 

function showView() {
   if $scope.isLoggedOn --- > show the email view
   if not $scope.isLoggedOn --- > show the login/registration view
};

*编辑* 根据Ran Sasportas的回答,我创建了一个Plunker演示。不要期望太多,它是非常基本的,但至少它是有效的。 Here is the link 我稍后会在测试嵌套视图和控制器时添加更多功能。

1 个答案:

答案 0 :(得分:1)

ui-router有一个名为$ state的服务,你注入了你的控制器。这样你可以控制你想要使用的视图 - 例如 - $ state.go('登录') 这将触发您在“配置”部分中定义的登录状态。 就是这样。您可以查看ui路由器文档 - http://angular-ui.github.io/ui-router/site/#/api/ui.router

祝你好运。