我正在为 Angular 中的 States Select 制定指令。它正在工作,但我花了一段时间试图找出一种在模板进入 DOM 之前编译模板的方法。它目前的工作方式如下:
app.register.directive('stateDropdown', ['StatesFactory', '$compile', function (StatesFactory, $compile) {
function getTemplate(model) {
var html = '<select ng-model="' + model + '" ng-options="state.abbreviation as state.name for state in states" class="form-control"></select>';
return html;
}
function link (scope, element, attrs) {
scope.states = StatesFactory.States;
element.html(getTemplate(attrs.stateModel));
$compile(element.contents())(scope);
}
return {
replace: true,
link: link
}
}]);
但因此,它将模板插入到元素中,然后针对范围编译它。有一个更好的方法吗?例如在模板插入之前编译模板?