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
}
}]);
ただし、テンプレートを要素に挿入し、スコープに対してコンパイルします。これを行うより良い方法はありますか?テンプレートを挿入する前にコンパイルするなど?