【发布时间】:2014-02-21 03:05:03
【问题描述】:
出于某种奇怪的原因,iron-router 随机返回 undefined。
this.route('pollyShow', {
path: '/polly/:_id',
template: 'polly_show',
notFoundTemplate: 'notFound',
before: function () {
var id = this.params._id;
var poll = Polls.findOne({_id: id});
console.log(poll);
var ip_array = poll.already_voted;
$.getJSON("http://smart-ip.net/geoip-json?callback=?", function(data){
ip_voted = ip_array.indexOf(data.host);
if (ip_voted > -1) {
Router.go('pollyResults', {_id: id});
}
});
},
data: function() {
return Polls.findOne({_id: this.params._id});
}
});
有时它会正常返回,而有时它只是返回 undefined。
这背后有什么原因吗?
【问题讨论】:
-
我恐怕不明白:这里返回的
undefined是什么? -
我的意思是
poll是undefined在 console.log(poll);这是data : function () { .. }下返回的内容 -
使用 console.log 我可以看到由于某种原因它实际上是未定义的。
-
这可能是因为来自订阅的数据尚未填充客户端的
Polly集合。将订阅上的wait设置为Polly,确保在处理路由之前为ready。 -
我没有设置任何订阅。我将如何设置等待?
标签: javascript meteor iron-router