[英]Meteor: Iterate over user roles for displaying checkboxes
使用此模板,我将显示所有结果,这些结果存储在users-collection中:
<template name="user">
{{#each users.roles}}
<input type="checkbox" data-role="{{this}}">{{this}}
{{/each}}
</template>
定义了一些角色,例如“ admin”,“ editor”,“ user_manage”。 但这会导致一些问题:
1)如果一个用户仅具有“ admin”角色,则只会显示一个复选框。 但是我需要显示所有可能的角色。 仅当角色在配置文件中时,才应选中该复选框。
2)显示的角色描述应该为“更细”。 我的意思是结果应该像这样:
<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;
});
现在,我考虑遍历roles
所有元素,并检查roles
是否存在(=选中)或不存在(=未选中)。 元素的值用于显示复选框的标签。
1)这是正确的方法吗?
2)如何将助手var roles
连接到模板进行检查?
您基本上是在正确的轨道上! 您的助手需要返回一个对象数组,而不是一个对象。 然后,您需要一个帮助程序,该帮助程序根据该角色是否在用户的角色数组中返回一个布尔值。 例如:
js:
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
}
});
的HTML:
<template name="user">
{{#each roles}}
<input type="checkbox" data-role="{{this.label}}"
{{#if hasRole this.label}}checked{{/if}}>{{this.name}}
{{/each}}
</template>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.