Meteor / Iron-Router - 如何将RouteController中的值传递给模板助手

时间:2013-12-19 09:46:14

标签: meteor

如果我有一个如下路线控制器:

add_departmentController = RouteController.extend({
    before: function(){
        var a = this.params._id;
        var b = 'abc'; 
    }
});

如何在模板的帮助器中访问这些值

Template.add_department.helpers({
    SomeProperty: function () {
        //Here I need access to a or b from above
        //Would also be nice to access 'this' directly eg. this.params
    },
});

2 个答案:

答案 0 :(得分:19)

使用控制器中的数据功能

add_departmentController = RouteController.extend({
    template: 'departmentTemplate',
    data: function(){
        return {_id: this.params._id};
    }
});

将数据函数的返回对象作为数据上下文“注入”到模板中。

[编辑]

模板: {{_id}}直接来自数据上下文,{{idFromHelper}}从模板帮助函数返回_id。

<template name="departmentTemplate">

  {{_id}}

  {{idFromHelper}}

</template>

助手:

Template.addDepartment.helpers({
    idFromHelper: function() {
        return this._id;
    }
})

答案 1 :(得分:13)

您可以在客户端代码中使用Router对象来访问当前控制器:

Template.addDepartment.helpers({
  someHelper: function() {
    var controller = Router.current();
    // return the _id parameter or whatever
    return controller.params._id;
  }
});