Javascript 无法访问iron router中data:属性中的此.params变量

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

当url为/company/martin时,以下代码不起作用:

 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
时可用。我现在看到了!谢谢你的帮助!是的,有一次我解释得很有道理,但其中一件事我从来没有自己解决过。谢谢