select
要素を拡張するために使用される属性ディレクティブを作成しようとしています。option
この機能強化の一環として、要素の子にアクセスする必要がありますselect
(そのため、関数でそれらにアクセスできるようにしたいと考えていlink
ます)。
たとえば、これは非常に基本的なテンプレートです。
<div ng-app="test" ng-controller="TestCtrl">
<select ng-model="selected" ng-options="i for i in data" enhanced></select>
</div>
非常に基本的なコントローラー:
var t = angular.module("test", []);
t.controller("TestCtrl", function ($scope) {
$scope.data = [
"One",
"Two",
"Three"
];
$scope.selected = $scope.data[0];
});
そして最後に、非常に基本的なディレクティブ:
t.directive("enhanced", function () {
return function ($scope, $element) {
console.log($element.find("option").length); // Always 0
};
});
その完全な例を含むフィドルを次に示します。
問題は、link
関数内でng-options
ディレクティブがまだ実行されておらず、select
要素がまだ空であることです。ng-options
ディレクティブが完了するまでディレクティブの実行を延期する方法はありますか? または、これを達成するためのより良い方法はありますか?