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 文件夹中。结果会不一样。
我写的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 文件夹中。结果会不一样。