Javascript Meteor使用Template.registerHelpers未能找到函数

Javascript Meteor使用Template.registerHelpers未能找到函数,javascript,templates,meteor,meteor-blaze,meteor-helper,Javascript,Templates,Meteor,Meteor Blaze,Meteor Helper,我编写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

我编写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函数,为什么meteor模板仍然无法找到我在上面注册的函数?

这应该可以:

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项目目录结构

  • 流星计划

    -
    客户端
    -dir

    • 有一个
      lib
      subdir

您可以将javascript放在meteor项目文件夹、客户端文件夹和lib文件夹中。结果会有所不同。

我知道它可以工作,我只是想知道registerHelper是如何工作的,因为我需要让这个函数在所有模板上都工作。我想你不知道meteor.js模板和助手是使用默认的meteor.js。