0
我一直在做我的第一个Meteor.js项目,这基本上是一个简单的博客,我不认为我明白Router.route()
内部正确发生了什么。参数未定义在Router.route数据
client.js
Router.route('/category/:_category', {
template: 'category',
layoutTemplate: 'ApplicationLayout',
waitOn: function() {
return Meteor.subscribe('categorizedPosts', this.params._category);
},
data: {
posts: Posts.find(),
// THE LINE BELOW IS THE PROBLEM
category: this.params._category
}
});
此代码给我的Uncaught TypeError: Cannot read property '_category' of undefined
错误在里面posts
指定行。没有这条线,我的路线工作正常,但我失去了我的category
数据。
从路线的事实,我知道行return Meteor.subscribe('categorizedPosts', this.params._category);
,waitOn()
里面工作正常,这意味着它正确抓住this.params._category
。
解决方案
我已经从答案中改变了一点我的代码。
data: function() {
return {
posts: Posts.find(),
category: this.params._category
}
}
我刚刚从编辑你的答案我的代码,但我可以问,为什么它的工作原理,功能块内?这是这个范围的问题吗? – 2015-02-11 02:52:28
好的,如果我们在一个函数范围内使用'this'关键字,那么这个问题就出现在'this'关键字上了,如果你将'this'放入一个对象'this.params ''将不再存在'this'现在将成为模板实例,如果将'this'放入函数中,您将获得'params',如果您将'this'放在一个对象中,您将获得模板实例 – Ethaan 2015-02-11 02:58:43