Javascript Meteor:迭代用户角色以显示复选框
使用此模板,我将显示存储在用户集合中的所有结果:Javascript Meteor:迭代用户角色以显示复选框,javascript,meteor,Javascript,Meteor,使用此模板,我将显示存储在用户集合中的所有结果: <template name="user"> {{#each users.roles}} <input type="checkbox" data-role="{{this}}">{{this}} {{/each}} </template> 现在,我考虑迭代角色中的所有元素,并检查角色是否存在(=选中)或不存在(=未选中)。元素的值用于显示复选框的标签 1) 这是正确的方法吗 2
<template name="user">
{{#each users.roles}}
<input type="checkbox" data-role="{{this}}">{{this}}
{{/each}}
</template>
现在,我考虑迭代角色中的所有元素,并检查角色是否存在(=选中)或不存在(=未选中)。元素的值用于显示复选框的标签
1) 这是正确的方法吗
2) 如何将助手var角色连接到模板以进行检查 你基本上在正确的轨道上!您的助手需要返回对象数组而不是对象。然后您需要一个助手,它根据角色是否在用户的角色数组中返回布尔值。例如:
js:
html:
{{{#每个角色}
{{this.name}}
{{/每个}}
<input type="checkbox" data-role="admin"> Administrator
<input type="checkbox" data-role="editor"> Editor
<input type="checkbox" data-role="user_manage"> Manage users
Template.user.helpers({
var roles = {admin: 'Administrator', editor: 'Editor', user_manage: 'Manage users'};
return roles;
});
Template.user.helpers({
roles: function(){
return [
{ label: 'admin', name: 'Administrator'},
{ label: 'editor', name: 'Editor'},
{ label: 'user_manage', name: 'Manage users'}
];
},
hasRole: function(role){
return Meteor.user().roles.indexOf(role)>-1; //assuming user.roles is just an array
}
});
<template name="user">
{{#each roles}}
<input type="checkbox" data-role="{{this.label}}"
{{#if hasRole this.label}}checked{{/if}}>{{this.name}}
{{/each}}
</template>