Javascript Meteor:为模板中的复选框设置辅助对象

Javascript 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

我正在使用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 : 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" : ""
    }
});