Javascript 无法访问iron router中data:属性中的此.params变量
当url为/company/martin时,以下代码不起作用:Javascript 无法访问iron router中data:属性中的此.params变量,javascript,meteor,iron-router,Javascript,Meteor,Iron Router,当url为/company/martin时,以下代码不起作用: this.route('scheduledTasks', { path: '/company/:name', data: { items: function(){ return scheduledTasks.find({company: this.params.name}); } } 虽然这确实有效: this.route('scheduledTask
this.route('scheduledTasks', {
path: '/company/:name',
data: {
items:
function(){
return scheduledTasks.find({company: this.params.name});
}
}
虽然这确实有效:
this.route('scheduledTasks', {
path: '/company/:name',
data: {
items:
function(){
return scheduledTasks.find({company: "martin"});
}
}
我尝试了几种解决方案,但似乎this.params.name不存在或无法访问???
this.params.name
需要在路由的上下文中进行评估,我相信只有当数据
是函数而不是对象文本时才会发生这种情况。试试这个:
this.route('scheduledTasks', {
path: '/company/:name',
data: function() {
var company = this.params.name;
return {
items: function() {
return scheduledTasks.find({company: company});
}
};
}
});
this.params.name
需要在路由的上下文中进行评估,我认为只有当数据
是一个函数而不是一个对象文本时才会发生这种情况。试试这个:
this.route('scheduledTasks', {
path: '/company/:name',
data: function() {
var company = this.params.name;
return {
items: function() {
return scheduledTasks.find({company: company});
}
};
}
});
尝试控制台日志记录
this
并查看它是什么。我将项目和产量作为属性,但没有参数…因此this
不是您认为的那样,因为函数创建了一个新范围,并且this
不再引用路由。尝试控制台日志记录this
并查看它是什么。我将项目和产量作为属性,但是没有参数…所以这个
不是你想象的那样,因为函数创建了一个新的作用域,这个
不再引用路由。就是这样!你能进一步解释我为什么需要使用函数吗?或者是让我更好地理解这种行为的资源?this
的值根据函数的计算方式而变化。根据,如果数据
是一个函数,则在运行路由时对其进行评估,以便您可以访问参数
。如果数据是一个对象文本,则稍后将由模板对其求值(此
将是一个模板实例),因此将无法访问参数
。在上面的解决方案中,我们通过将name
值绑定到一个变量来避免这个问题,该变量将在调用find
时可用。我现在看到了!谢谢你的帮助!是的,有一次我解释得很有道理,但其中一件事我从来没有自己解决过。谢谢就这样!你能进一步解释我为什么需要使用函数吗?或者是让我更好地理解这种行为的资源?this
的值根据函数的计算方式而变化。根据,如果数据
是一个函数,则在运行路由时对其进行评估,以便您可以访问参数
。如果数据是一个对象文本,则稍后将由模板对其求值(此
将是一个模板实例),因此将无法访问参数
。在上面的解决方案中,我们通过将name
值绑定到一个变量来避免这个问题,该变量将在调用find
时可用。我现在看到了!谢谢你的帮助!是的,有一次我解释得很有道理,但其中一件事我从来没有自己解决过。谢谢