ロール名の配列に基づいて、特定の DOM 要素を表示または非表示にできるようにしたいと考えています。問題は、htmlで役割を確認したいということです。
何かのようなもの:
<div data-bind="if: isInRole('Admin', 'Editor')">
また
<div data-bind="if: isInRole(['Admin', 'Editor'])">
上記の解決策は私にはうまくいかないようです。提案/代替案はありますか?
ロール名の配列に基づいて、特定の DOM 要素を表示または非表示にできるようにしたいと考えています。問題は、htmlで役割を確認したいということです。
何かのようなもの:
<div data-bind="if: isInRole('Admin', 'Editor')">
また
<div data-bind="if: isInRole(['Admin', 'Editor'])">
上記の解決策は私にはうまくいかないようです。提案/代替案はありますか?
@nemesv によるコメントは的確です。質問に表示されていないコードにエラーまたは問題がある可能性があります。それでも、発生しているエラーを見つけて修正するのに役立つセットアップを次に示します。
メソッドの署名IsInRole
が、ロールの配列である入力パラメーターと一致していません。それを変更するIsInAnyRole
と、より明確になる可能性があります。次のようなものがうまく機能するはずです。
<div data-bind="if: isInAnyRole(['admin', 'editor'])">Protected div!</div>
次のビュー モデルを使用します。
var vm = function() {
var self = this;
self.roles = ko.observableArray(["editor", "user"]);
self.isInAnyRole = function(targetRoles) {
return targetRoles.some(function(el) { return self.roles().indexOf(el) !== -1; });
}
};
上記のデモについては、このフィドルをチェックしてください。ビューモデルの役割を「編集者」または「管理者」以外に変更すると、メッセージは消えます。