1

restrict:'a'に機能を追加する、属性制限された Angular ディレクティブ ( ) を作成しましたtextarea。他のタイプの要素に適用しても意味がありません。

a を追加するのif (element.nodeName == 'TEXTAREA') {は本当に汚く、信頼できません。

追加しようとしrequire: textareaましたが、機能せず、次のエラーが発生します。Error: No controller: textarea

質問: この制限を適切に適用するよりクリーンな方法はありますか?

編集:最初の回答に続く追加の制約。

このタイプの複数のディレクティブを使用できるようにしたいので、このディレクティブでテンプレートを使用することは避けたいです。これが私が望むものの例です:

<textarea splittable shared mergeable></textarea>

4

3 に答える 3

2

で独自のディレクティブ (例: my-textarea) を使用する場合restrict: 'E', replace: true、追加の属性は、他の属性ディレクティブであっても、ディレクティブのルート要素に引き継がれます。そう:

<my-textarea splittable class="foobar"></my-textarea>

次のようにレンダリングできます。

<textarea splittable="" class="foobar"></textarea>

実行さsplittableれます。

デモ: http://jsfiddle.net/LMq3M/

したがって、独自のディレクティブを使用することが、これを処理する最もクリーンな方法だと思います。

于 2013-09-05T08:51:18.463 に答える
1

私の意見では、実際の問題が人的エラーである場合、複雑なコードを追加する傾向があるため、そのようなコントロールを追加する必要はありません。

ディレクティブの目的と使用法を文書化するだけです。

于 2013-09-05T08:41:55.677 に答える
0

アイデアは、ディレクティブに myDirective のような一意の名前を付けて、HTML でそのまま使用できるようにすることです。

<body>
    <my-directive></my-directive>
</body>

ディレクティブは、タグをディレクティブ コントローラーで指定したテンプレートに置き換えます。あなたの場合、プロパティが追加された単純なテキストエリア要素になる可能性があります。

このビデオを見て、ディレクティブの概念を明確に理解することをお勧めします。 http://www.youtube.com/watch?v=xoIHkM4KpHM

于 2013-09-05T08:29:05.773 に答える