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

A_L*_*A_L 9 meteor

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

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

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

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
    },
});
Run Code Online (Sandbox Code Playgroud)

Der*_*mbo 19

使用控制器中的数据功能

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

这将数据函数的返回对象作为数据上下文"注入"到模板中.

[编辑]

模板:在{{_id}}直接从数据方面来,{{idFromHelper}}返回从模板辅助函数的_id.

<template name="departmentTemplate">

  {{_id}}

  {{idFromHelper}}

</template>
Run Code Online (Sandbox Code Playgroud)

帮手:

Template.addDepartment.helpers({
    idFromHelper: function() {
        return this._id;
    }
})
Run Code Online (Sandbox Code Playgroud)


Loq*_*man 13

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

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