我有'文章'的列表视图和详细视图。这些是路线
this.route("articles", {path: "/articles", controller: "ArticlesController"});
this.route("article", {path: "/articles/:_id", controller: "ArticleController"});
在/ articles的模板中,我有一个指向详细信息视图的链接
<a href="{{pathFor 'article' id=this._id }}"><i class="portlet-icon portlet-icon-maximize"></i></a>
在嵌入id的情况下正确呈现页面,例如:
<a href="/articles/gb6KgxbnfBeynz4rH">
<i class="portlet-icon portlet-icon-maximize"></i>
</a>
在与路线相关的控制器中,我无法访问参数,它是空的。
this.ArticleController = RouteController.extend({
template: "Article",
onBeforeAction: function() {
this.next();
},
action: function(){
if (this.isReady()) {
this.render();
} else {
this.render("loading");
}
},
isReady: function() {
var ready = true;
var subs = [ Meteor.subscribe('singleArticle')];
_.each(subs, function(sub) {
if(!sub.ready())
ready = false;
});
return ready;
},
data: function() {
console.log(Iron.Location.get());
console.log("params: " + this.params);
return {
article: Articles.findOne({articleId:this.params._id}, {})
};
}
});
从Javascript控制台我可以看到_id与网址一起传递,但我无法访问 this.params
答案 0 :(得分:1)
问题是您正在使用console.log
:
console.log("params: " + this.params);
params对象实际上是一个长度为零的数组。您可以在此处阅读有关它的讨论:https://github.com/iron-meteor/iron-router/issues/1213
所以你可以在各个参数上使用console.log,它会起作用:
console.log("params._id: " + this.params._id);
或者您可以使用:
console.dir("params: " + this.params);