4

ロール名の配列に基づいて、特定の DOM 要素を表示または非表示にできるようにしたいと考えています。問題は、htmlで役割を確認したいということです。

何かのようなもの:

<div data-bind="if: isInRole('Admin', 'Editor')">

また

<div data-bind="if: isInRole(['Admin', 'Editor'])">

上記の解決策は私にはうまくいかないようです。提案/代替案はありますか?

4

1 に答える 1

5

@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; });
    }
};

上記のデモについては、このフィドルをチェックしてください。ビューモデルの役割を「編集者」または「管理者」以外に変更すると、メッセージは消えます。

于 2013-04-28T12:05:01.510 に答える