ディレクティブを取得し、transclude: element
ng-options を使用して選択要素にテンプレートを適用し、指定されたテンプレートで選択をラップしたいと考えています。
app.directive("ngSelect", function(){
return {
restrict: "A",
replace:true,
transclude: 'element',
templateUrl: function(elem,attrs) {
return 'select.html';
},
...
compile: function compile(cElement, cAttrs, cTransclude) {
return{
pre: function preLink(scope, aElement, aAttrs, aController){
},
post: function postLink(scope, aElement, aAttrs, aController){
}
}
使用法:
<select ng-select ng-label="Select 2" ng-model="data.select2" required ng-options="item.id as item.value for item in list"></select>
しかし、何らかの理由でラップされているのは ng-options からのオプションであり、select 自体ではありません。ここで最終的な DOM を見ることができます。
<div class="col-xs-12 col-sm-6 col-md-3 col-lg-2 ...">
<option value="?"selected="selected"></option>
<option value="number:1" label="value1">value 1</option>
<option value="number:2" label="value 2">value2</option>
<option value="number:3" label="value 3">value</option>
</div>
トランスクルージョンのある時点で選択要素が削除されたと思いますが、よくわかりません。私が見つけたngOptions
のtranclude: element
は少し混乱したことだけでした。
tranclude: element
この select をand で正しく動作させるにはどうすればよいngOptions
ですか? コンパイル/プリ/ポストリンク機能で何かできますか?