さまざまな構成属性を使用できるカスタム要素ディレクティブ (ユーザーの写真と名前を表示) があります。このuc-on-hover
属性は、ユーザーが DOM 要素にカーソルを合わせたときに表示する要素を決定する関数を取ることができます。現在、関数のロジックは $rootScope (Angular サービスで定義) にあります。ディレクティブ ロジックは$eval(attr['ucOnHover'])
、$rootScope で関数を実行するために実行します。このパターンは当面はうまく機能しますが、複雑すぎて $rootScope が扱いにくくなる可能性があるのではないかと心配しています。とにかく、ディレクティブとサービスの両方の懸念の分離に注意を払い、柔軟なソリューションを作成しながら、ソリューションの設計を変更できるものはありますか?
ビューのコンテキストでの私のカスタム要素ディレクティブ:
<user-card locator="{{ Item.Author }}" uc-on-hover="$root.namespace.displayFloatingContainer()"></user-card>
$rootScope.namespace.displayFloatingContainer() を定義するサービス:
.service('uiElementService', ['$rootScope', function ($rootScope) {
$rootScope.ngRestForm.displayFloatingContainer = function (code) {
try {
console.log('rootscope.uielementservice hit with code: ' + code);
return true;
} catch (err) {
}
return false;
};
}])
.run(function (uiElementService) {
console.log('uiElementService: Start');
});
ディレクティブは、次の方法で $rootScope の関数を呼び出します。
$scope.$eval(attrs["ucOnHover"]);
この設計に関するヘルプをいただければ幸いです。