オブジェクトの配列に基づいてテーブルを作成しようとしています。この配列には同じ型のオブジェクトは含まれておらず、各行には完全に異なるスタイルとonclick関数が必要ですが、基本的に完全に異なる動作です。例えば 、Iは、テンプレートとコントローラとDIRCための完全に異なる機能とテンプレートを必要DIRBオブジェクト・タイプのデータに基づいて動的にディレクティブを選択します。
var data=[
{
type:'dir-b',
data: { ... }
},
{
type:'dir-b',
data: { ... }
},
{
type:'dir-c',
data: { ... }
}
]
。
解決策は、3つのディレクティブを作成することでした。そのうちの1つは、データに基づいて追加する他の2つのディレクティブの1つを決定するために実行されます。
.directive("dirA", function($compile){
return{
restrict:'A',
priority:1000,
terminal:true,
link: function(scope, element, attribute){
element.removeAttr("dir-a");//prevent endless loop
element.attr(attribute.type,"");
$compile(element)(scope);
}
}
})
.directive("dirB", function($compile){
return{
restrict:'A',
replace:true,
link: function(scope, element, attribute){
console.log("dirA");
}
}
})
.directive("dirC", function($compile){
return{
restrict:'A',
replace:true,
link: function(scope, element, attribute){
console.log("dirC");
}
}
});
<tr dir-a type='{{d.type}}' ng-repeat='d in data'/>
は、所望の効果がありません。私はdirAに0の優先順位を与え、それは属性を解析することができますが、配列のサイズよりも何度も繰り返すか、1000の優先順位を与え、b.typeを解析してそれをリテラルとして使用することはできません。 誰にもこれに対する解決策がありますか?