在模板中我有一个字段:
{{#if thisIsIt}}Hello{{/if}}
在控制器中:
thisIsIt: function()
{
return this.get("underdata").get("length") // 1
}.property('underdata')
在路由器中:
setupController: function(controller, model)
{
this.store.find('underdata', {id: 1 }).then(function(underdata) // 2
{
controller.set("underdata", underdata); // 3
});
}
通话顺序为:2,1,3。所以控制器满足模板试图得到一个underdata的长度。但是underdata是未定义的,因为3还没有被调用。抛出错误后,最终会调用3。
如何让控制器等到setupController从underdata获取必要的数据?
答案 0 :(得分:1)
你的问题是承诺。虽然首先调用setupController
函数,但稍后会解决承诺。
解决方案是使用model
挂钩来加载数据。如果beforeModel
挂钩确实无效,您还可以使用afterModel
或model
挂钩。
在继续路由之前,这三个钩子将等待返回的承诺解决。