私は、Angular 1.5を使用して再利用可能なアイテムピッカーコンポーネントを作成しています。ピッカーには、検索フィールドと選択する項目のリストがあります。ピッカーのユースケースの例は、ユーザがいくつかの項目を選択し、次に続行するための「続行」ボタンを有するポップアップである。Angularコンポーネントに複数の 'button'パラメータを渡す
概念的には、検索フィールドとアイテムのリストはコンポーネントに属し、「続行」ボタンは周囲のダイアログに属します。ただし、検索フィールドの横にボタンを配置したい。いくつかのケースでは、余分なボタン、時には1つの余分なボタン、時には2つがありません。このような
何か:
、このようなコンポーネントを作成するための最良の方法は何ですか?
、アイテムピッカーのためのコンポーネント/ディレクティブを作成し、HTMLでディレクティブの前または後にボタンを配置し、ボタンを配置するためにCSSを使用します。私が考えてきた
オプション。
ここで、ボタンの位置は、HTML内の適切な位置にないため、醜くて壊れやすいものです。これはおそらく、ピッカーコンポーネントの上にラッパーのdivと絶対配置が必要になります:
<div style="position: relative"> <item-picker></item-picker> <button name="Continue" ng-click="submit()" style="position:absolute; top:5px; right: 5px"></button> </div>
は、どういうわけか、アイテムピッカーコンポーネントのパラメータとして、ボタンとコールバックを渡します。ここで醜さは、ボタンやスタイルやボタンの量のハードコーディングである:
<item-picker btn1-text="Continue" btn1-style="primary" btn1-callback="submit()" btn2-text="Cancel" btn2-style="secondary" btn2-callback="cancel()"></item-picker>
私はボタンの設定とコールバックは、単一の構成オブジェクトとして渡すことができるかどうかわかりませんよ。私は、適切な
'&'
コールバックバインディングの代わりに設定オブジェクトを渡すと正しく動作するかどうか、主にコールバック関数に関心があります。ピッカーをコンポーネント/ディレクティブにするのをやめ、
<ng-include>
を使用して、スコープからボタン構成を読み取るピッカーコードを含めるだけです。醜さは、スコープの欠如にあり、コンポーネントを使用していません。
このような場合にはいくつかのベストプラクティスがありますか?
[ng-transclude](https://docs.angularjs.org/api/ng/directive/ngTransclude)を使用する4番目のオプションがある可能性があります。 – o4ohel
@ o4ohelは私が望むように見えます。世話をするケア? (私も1つ書くことができます) – Sampo