我已经有一段时间没有这个问题,但由于它在我的应用程序的管理员方面,我只是处理它。现在它很烦人。
路线为post_detail
。我为这条路线指定了一个数据上下文:
data: function() {
return Posts.findOne(this.params._id);
}
所以路由应该有一个数据上下文。订阅采用waitOn
功能。
在该路由的渲染回调中,我有:
var tag_obj = this.data.tags;
大多数情况下,this.data是undefined
。通常(但不总是),当我刷新页面时,我得到了数据。有时我必须尝试几次,有时我必须在页面之间来回移动才能显示数据。这是不可预测的。
似乎数据上下文在调用呈现的回调时始终没有准备好......但我认为这是waitOn
和rendered
回调的重点?我已经尝试使用document.ready()
和delay
函数给它时间加载但没有运气。
知道可能导致这种情况的原因吗?
有没有办法在rendered
回调中等待数据上下文准备好?我见过的所有例子都假设它已经存在并准备好了......
答案 0 :(得分:2)
我觉得它有点奇怪,但Iron Router并没有等待默认情况下所有订阅都准备就绪。但是,如果您在某处添加Router.onBeforeAction('loading')
,它将在呈现模板之前等待所有订阅准备就绪。