4

私は読んAngularJSでいて、非常に有望に思えます。私が理解しようとしている唯一のことは、フレームワークに固有のものではありませんが、クライアント側のテンプレートでは一般的です。

複数のロールを持つ Web アプリケーションがあるとします。各ロールには追加機能が含まれている可能性があるため、ロールごとに異なるテンプレートを使用することはできません。これは悪い習慣と見なされるため、クライアント側を使用するための最良のアプローチは何ですか?その間、テンプレートをクライアントに公開しないでください。たとえば、AngularJS使用する必要はありませんng-showか?サーバー側でテンプレートを生成するのに最適なツールは?

4

2 に答える 2

6

その医療データをサーバー側でフィルタリングし、それに応じて Angular で表示する必要があります。ng-show と ng-hide は、DOM にまだ存在する要素の表示を切り替えるだけです。言い換えれば、HIPAA で保護されたデータは、誰でも「ソースを表示」できる場所に置かれているということです。

ロールに基づいて表示したくない DOM 要素を完全に削除する方法を思いついたとしても、技術的にはそのデータをクライアントに転送しているため、問題ではありません。doer は単にパケットを盗聴し、保護されたデータを取得します。

実際、セキュリティと役割チェックはすべてサーバー上で行う必要があります。Angular であろうとなかろうと、どの JS フレームワークでも、JavaScript アプリがクライアント上でそれを行うことはまったく信頼できません。

役割に基づいてフィールドを非表示にする場合 (おそらく、それらのフィールドに表示するデータがないため)、ng-show または ng-hide が役に立ちます。ときどき ng-switch で十分です。何らかの理由でまったく異なるテンプレートが必要な場合は、それぞれの場合にカスタム ディレクティブを使用して ng-switch を使用します。これにより、各ロールの下にあるものをテンプレート化できます。

それが役立つことを願っています。

于 2012-10-21T23:24:49.730 に答える
3

サーバー側で適切な役割を持つユーザーにのみデータを提供するという Blesh の意見は正しいですが、クライアント UI の一部を再利用したいようです。

AngularJS では、ng-includeさまざまなデータに対してさまざまなパーシャルを使用および構築できました。したがって、「医師」ビューと「看護師」ビューの両方で次のようなものを書くことができます。

<div ng-include="'allergies.html'"></div>

そして、次のように別の HTML ファイルを作成しますallergies.html

<p>Allergy info: {{someData}}</p>

別のオプションは、ディレクティブを使用することです。

于 2012-10-22T05:54:54.527 に答える