Javascript Meteor:为模板中的复选框设置辅助对象
我正在使用alanning:roles检查角色: helper.jsJavascript Meteor:为模板中的复选框设置辅助对象,javascript,checkbox,meteor,Javascript,Checkbox,Meteor,我正在使用alanning:roles检查角色: helper.js Template.user.helpers({ var loggedInUser = Meteor.user() var admin = (Roles.userIsInRole(loggedInUser, ['admin'])) ? true : false, editor = (Roles.userIsInRole(loggedInUser, ['admin'])) ? true : fals
Template.user.helpers({
var loggedInUser = Meteor.user()
var admin = (Roles.userIsInRole(loggedInUser, ['admin'])) ? true : false,
editor = (Roles.userIsInRole(loggedInUser, ['admin'])) ? true : false;
var roles = { admin: admin, editor: editor };
return roles;
});
模板
<template name="user">
<form>
<input type="checkbox" name="admin"> Admin
<input type="checkbox" name="editor"> Admin
</form>
</template>
管理
管理
如果admin或editor为true,如何将复选框设置为checked?
或者是否有更好的方法设置选中的复选框?您可以根据以下用户角色在页面加载时设置复选框:
Template.users.rendered = function() {
var self = this;
var loggedInUser = Meteor.userId();
var admin = (Roles.userIsInRole(loggedInUser, ['admin'])),
editor = (Roles.userIsInRole(loggedInUser, ['editor']));
//set the checkboxes correct values
$(self.find("#admin")).prop('checked', admin);
$(self.find("#editor")).prop('checked', editor);
};
如果您需要以反应方式设置复选框的状态,以下是您可以继续操作的方法: HTML
通常,您希望在其回调中初始化模板的状态,如下所示:
Template.users.rendered = function() {
var self = this;
var loggedInUser = Meteor.userId();
var admin = (Roles.userIsInRole(loggedInUser, ['admin'])),
editor = (Roles.userIsInRole(loggedInUser, ['editor']));
//set the checkboxes correct values
$(self.find("#admin")).prop('checked', admin);
$(self.find("#editor")).prop('checked', editor);
};
Template.user.onRendered(函数(){
var userId=Meteor.userId();
$('input[name=admin]').prop('checked',Roles.userIsInRole(userId,['admin']);
$('input[name=editor]').prop('checked',Roles.userIsInRole(userId,['editor']);
});
请注意,根据,userIsInRole
接受id(而不是对象)
如果要检查多个角色,可以像这样迭代:
Template.user.onRendered(函数(){
var userId=Meteor.userId();
变量角色=['admin','editor'];
_.每个(角色、功能(角色){
$(“输入[name=“+role+”]”)prop('checked',Roles.userIsInRole(userId,[role]));
});
});
首先,您应该再次检查助手是如何创建的。我将使用字段列表并对此进行迭代。那我就不需要阵列了
Template.user.helpers({
"getValueForChecked": function(value){
var loggedInUser = Meteor.userId();
var credentials= (Roles.userIsInRole(loggedInUser, [value]));
return credentials? "checked" : ""
} ,
//or alternatively you can use one helper per field
"isAdmin": function(){
var loggedInUser = Meteor.userId();
var admin = (Roles.userIsInRole(loggedInUser, ['admin']));
return admin ? "checked" : ""
},
"isEditor": function(){
var loggedInUser = Meteor.userId();
var editor = (Roles.userIsInRole(loggedInUser, ['editor']));
return editor? "checked" : ""
}
});