グリッドとしてコンテンツを並べ替えるカスタムディレクティブを作成しようとしています。 ng-repeat
指示の結果をクロールし、結果の要素を並べ替える必要があります。カスタムディレクティブのng-repeat子要素のハンドルを取得するにはどうすればよいですか?
リンク機能内でelement.children()
メソッドを呼び出すと、ng-repeat
ディレクティブがまだレンダリングされていないためコメントとして解釈されるため、空の配列があります。
それ以外の場合、ディレクティブは内容が「静的」であれば効果的です。
HTML
<grid n='6'>
<div ng-repeat="i in [1,2,3]"></div>
</grid>
コードの唯一の興味深い作品と私のディレクティブ:
app.directive('grid', [function() {
return {
restrict: 'E',
replace: true,
transclude: true,
template: "<div ng-transclude></div>",
link: function (scope, grid, attrs) {
// With an ngRepeat transcluded, els result in an empty array
var els = grid.children();
// ...
};
}]);
私は何をしないのですか?並べ替えを達成するために
に近づく両方。 – Chandermani
確かに動作しますが、この方法は信頼できますか? –
実際にあなたの子テンプレートはポストリンク関数の後にレンダリングされるので、$ timoutを追加する必要があります。 – Chandermani