Ember js - 如果网址由

时间:2016-06-21 16:19:24

标签: javascript ember.js

我的项目中有一些我不希望用户访问的路由,除非他们通过其他路由导航到它们。现在我想我应该在转换到路线时传递一个变量。加载路径时,我应该查看该变量并使用它来确定是加载页面还是重定向到其他页面。 transitionTo和transitionToRoute只允许您在控制器和模型中设置变量。我绝对不想为我的模型添加属性只是为了重定向,所以我认为它应该在控制器中设置变量。加载路由时,我可以调用activate,beforeModel或afterModel等函数,但所有这些函数都在创建控制器之前运行。这意味着它们无法读取在transitionTo或transitionToRoute期间传递给控制器​​的变量。在控制器中,我可以调用init成功读取控制器变量,但是当正确访问页面时(通过transitionTo),init函数会导致它第一次无法呈现。如果我稍后在同一个会话中转到它,它会正确呈现。

此时,我假设必须有一种更简单的方法来检查用户是否正确访问了页面。似乎没有任何方法可以在transitionTo期间设置路由变量,但也许我可以传递参数并在路由加载时读取它们?任何见解都会非常感激。

1 个答案:

答案 0 :(得分:2)

在路由器内部,您可以使用setupController挂钩。它的签名是

  setupController(controller, context, transition) {
    if (controller && (context !== undefined)) {
      set(controller, 'model', context);
    }
  },

最后一个参数称为transition,是可选的。它包含有关用户如何访问路由的信息。通过导航或在应用程序本身内,如果用户刷新页面或直接输入网址,它就会为空。