我有一个Ember.js应用程序,顶部有一个导航栏。其中一个按钮转到/home
,而另一个按钮转到/book/:id/overview
。如果我在/home
页面上,则按钮呈现正常。如果我将鼠标悬停在按钮上,我会看到该链接会将我带到/book/2/overview
。如果我复制链接位置并将其粘贴到地址栏中,则会转到/book/2/overview
。但是,如果我只是点击链接,我会被带到/book/undefined/overview
。链接显然指向正确的位置,但Ember.js正在把我带到错误的位置。 (或者更具体地说,它似乎没有找到模型,即使它在我手动输入ID时发现它也没问题。)
可能出现什么问题?
(我会在知道相关位后立即发布一些代码。此时似乎可能有很多事情。)
答案 0 :(得分:1)
单击链接时,与通过浏览器中的URL加载链接相反,不会调用路径的模型函数,而是将链接中提供的模型直接传递给setupController。也许你在做那些奇怪的事情。
以下是Ember代码中model()的注释:
Note that for routes with dynamic segments, this hook is only
executed when entered via the URL. If the route is entered
through a transition (e.g. when using the `linkTo` Handlebars
helper), then a model context is already provided and this hook
is not called. Routes without dynamic segments will always
execute the model hook.
This hook follows the asynchronous/promise semantics
described in the documentation for `beforeModel`. In particular,
if a promise returned from `model` fails, the error will be
handled by the `error` hook on `Ember.Route`.