我正在尝试编写一个用于增强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
指令完成?还是有更好的方法来实现这一目标?