0

カスタム ディレクティブ内で Angular ディレクティブ (つまり、ngModel、ngClick、ngShow など) を使用するためのベスト プラクティスがあるかどうかを知りたいだけです。これまでのところ、カスタム属性を作成し、その属性をディレクティブの値としてテンプレートに渡してきました。これを行うより良い方法はありますか?Angular ディレクティブを直接呼び出す方が効率的です。

'&ngClick'分離スコープ内での参照を見てきました...これのユースケースは何ですか? を使用するのとどう違うの'&'ですか?

やりたいこと...

<my-directive ng-model="myModel" ng-click="myAction(args)"></my-directive>

私がしてきたこと...

<my-directive model="myModel" action="myAction()"></my-directive>

...
  scope: { model: '=', action: '&' },
  template: '<div ng-model="model" ng-click="action">Click me</div>'

編集:リクエストに応じて、イラストとしていくつかのコードを追加しました。

http://plnkr.co/edit/xOtaxYM1QsP5LmmWPcoB?p=preview

これはうまくいきません。正しくコンパイル (またはリンク?) されません。では、Angular ディレクティブを渡すために何が欠けているのでしょうか?

4

1 に答える 1

0

AngularJS のドキュメント ページを参照することをお勧めします。ディレクティブとは何か、ベスト プラクティスと共にできることについての詳細な説明があります。一見の価値があります。

AngularJS ディレクティブ

例の 2 番目の部分 ( template: '<div ng-model="model" ng-click="action">Click me</div>') には、コマンド (つまりng-click) が埋め込まれています。その場合、テンプレートは を使用してコンパイルする必要があります$compile

興味深いことに、ドキュメントには次のように記載されています

私にとっては、ディレクティブを使用する通常の方法を使用する必要があることを意味します。$compile2番目に来ます。<my-directive ng-model="myModel" ng-click="myAction(args)"></my-directive>の代わりに を選択する必要があることを意味しますtemplate: '<div ng-model="model" ng-click="action">Click me</div>'

常に可能であるとは限りません。上記のように、微調整された回答が必要な場合は、具体的な使用例を提供する必要があります。

AngularJS $コンパイル

于 2013-11-05T19:48:37.430 に答える