Meteor 使用 Template.registerHelpers 找不到函数

Meteor using Template.registerHelpers failed to find function

我写的meteor 1.2.1 registerHelper函数是这样的:

Template.registerHelper('UserisRole',
function(user, role){
if (user.roles[Roles.GLOBAL_GROUP].indexOf(role)>-1)
  return true;
else {
  return false;
  }
});
...
...
Template.TableActionBtns.events({

'click #btnRemove': function(){
var tmpuser=Meteor.user();
    if (UserisRole(tmpuser,'admin')) {     //error happens for UserisRole is not defined
  Accounts.users.remove({id:this._id});
        //Session.set("albumID", this._id);

    } else {

        var title = "Remove not allowed";

        var msg = "Please login as admin to remove it";

        toastr.warning(msg, title);

    }

}});

我之前注册了UserisRole函数,为什么流星模板还是找不到我上面注册的函数?

这应该有效:

UserisRole = function (user, role) {
  if (user.roles[Roles.GLOBAL_GROUP].indexOf(role)>-1) {
    return true;
  } else{
    return false;
  }
}

Template.TableActionBtns.events({
  'click #btnRemove': function(){
    var tmpuser=Meteor.user();
    if (UserisRole(tmpuser,'admin')) {     //error happens for UserisRole is not defined
      Accounts.users.remove({id:this._id});
      //Session.set("albumID", this._id);
    } else {
      toastr.warning("Please login as admin to remove it", "Remove not allowed");
    }
  }
});

要访问全局助手,您需要像下面这样使用它

UI._globalHelpers['UserisRole'](user, role)

但更好的方法是创建一个函数并向全局助手注册该函数

UserisRole = function(user, role){
   if (user.roles[Roles.GLOBAL_GROUP].indexOf(role)>-1)
     return true;
  else {
    return false;
  }
}

Template.registerHelper(UserisRole);

这样就可以通过简单的函数调用调用js中的函数了

UserisRole(user,role)

或在模板中

{{UserisRole user role}}

你帮助加载模板或类似的东西。

在堆栈中搜索 meteor 项目目录结构。

  • meteor project目录

    -client - 目录

    • 有一个 lib 子目录

您可以将 javascript 放在 meteor 项目文件夹、client 文件夹和 lib 文件夹中。结果会不一样。