コントローラーのようにスコープを設定するディレクティブを作成する必要があります。その中に入力とボタンがあります。一部のボタンがクリックされると、$scope.refresh() が呼び出され、モデル値が一部のグリッドに渡されて更新されます。
ほとんどのものは正常に動作します。モデルを内部入力にバインドし、ng-click を使用してボタン クリック イベントをバインドし、refresh() メソッドを呼び出します。しかし、更新機能では、データ テーブルの ID を取得して操作する必要があります。今のところ、ng-click のメソッド パラメータを介してのみ渡すことができます。コードは以下のとおりです。
<div ng-controller="MyController">
<input ng-model="year"/>
........
<button ng-click="refresh('grid1, grid2')">Refresh</button>
<button ng-click="reset()">Reset</button>
</div>
見た目が悪いと思います。グリッド ID を他のメソッドで再利用する必要がある場合は、何度も渡す必要がありますが、attr をコントローラーに渡す方法やコントローラーを拡張する方法がわかりません。このようなことを達成する良い方法はありますか?
<div my-controller="MyController" grids='grid1, grid2' charts='chart1,chart2' ...>
<input ng-model="year"/>
......
<button ng-click="refresh()">Refresh</button>
<button ng-click="reset()">Reset</button>
</div>
あるいは考え方が悪いのかもしれません。この仕事をするために別の方法を使ったほうがいいですか?
更新しました:
ユースケースは次のようになります。
クエリとしていくつかの入力を含む再利用可能なコンポーネントを作成する必要があります (私が推測するトランスクルージョンを介して)。このコンポーネントは、いくつかの外部グリッドとチャートにバインドされています (残念ながら、それらはまだディレクティブではありません)。コンポーネントには、ng-click を使用して refreshGrids または refreshCharts アクションをトリガーするボタンがあります。アクション内で setQuery() メソッドを呼び出し、モデル (入力の値) をメソッドに渡すには、グリッドとチャートの ID が必要です。そのため、ID をコンポーネントまたはアクションに渡す必要があります。
ng-controller を使用する理由は、分離のための新しいスコープを作成するためです。