状況は次のとおりです。スカラー、配列、他のエンティティへの参照など、さまざまなプロパティを持つエンティティがあります。各プロパティ タイプは、アクション (作成、プロパティ定義の編集、プロパティ値の編集、表示) に応じて異なる方法で表示できます。各プロパティは、エンティティによって同等に扱われ、通常、プロパティの配列を反復し、一般的なプロパティ ディレクティブを作成することによってレンダリングされます。
プロパティ ディレクティブは、リンク関数でプロパティ タイプと目的のアクションをチェックし、適切なテンプレートを取得してコンパイルします。ここにいくつかの擬似コードがあります:
myModule.directives('property', function() {
return function(scope, element, attributes) {
var template = fetchTemplate(scope.propertyType, attributes.action);
element.html($compile(template)(scope));
}
}
コントローラーのロジックはどこに配置すればよいですか? 現在、テンプレートの各プロパティに専用のコントローラーを定義し、ng-controller
そのコントローラーをアプリケーションのコントローラー ファイルに配置します。それでも、ロジックはディレクティブ自体に入るべきだと思います。問題は次のとおりです。それまでにテンプレートの準備ができていないため、ディレクティブのコントローラー関数を使用できません。テンプレートをフェッチする同じリンク関数で、さまざまなプロパティ タイプのすべてのロジックを処理する必要がありますか? または、プロパティごとにディレクティブを定義してから、それらのディレクティブをプロパティ テンプレートで宣言する必要がありますか? (ディレクティブは、コントローラーの処理を行う別のディレクティブを宣言するテンプレートをロードするため、これはまったく正しくないようです)。
動的テンプレートでこれを達成する角度のある方法は何ですか?