0

在 Meteor 中定义了 3 个全局助手,如下所示:

Template.registerHelper('activeTrips', function () {
    console.log("Global Active Trips");
    return Trips.find().count();
});

Template.registerHelper('isSuperUser', function () {
    console.log("Global isSuperUser");
    return Meteor.user().username === "superuser";
});

Template.registerHelpr('isAdminUser', function () {
    console.log("Global isAdmin");
    return Roles.userIsInRole(Meteor.user(), ['admin']);
});

用作模板计数显示 {{activeTrips}} 正确显示计数!

但是其他帮助器(返回 True 或 False)似乎不适用于把手 {{#if}} 构造?

例如 {{#if isAdminUser}} 做管理工作 {{/if}} 永远不会工作,即使我强制函数返回 true - 事实上,根据我的控制台输出,助手永远不会被调用。

4

1 回答 1

8

首先,我将确保您已在仅在客户端(位于“客户端”目录中)加载的 Javascript 文件中定义了所有三个全局模板帮助程序。

其次,我会确保在加载使用这些模板帮助程序的模板代码之前加载此 Javascript 文件(例如,确保具有全局模板帮助程序的 Javascript 文件位于顶部下的“lib”目录中- 'client' 级目录,而模板代码位于另一个目录中的 Javascript 文件中,例如 'templates',位于同一顶级 'client' 目录下)。

第三,我会确保您Template.registerHelper在编写模板帮助代码的任何地方都正确拼写(我注意到您在上面的代码示例中拼错了“registerHelper”)。

在验证了所有这些事情之后,代码是否仍然无法按预期工作?

于 2015-03-04T07:41:38.200 回答