私はAngular + Angular Mobile UIを使用してphonegapでアプリを開発しています。AngularJS:ng-repeatのdivに同じ高さを設定しました
ブートストラップカラム内のテンプレートファイルにdivのリストがありますjQueryを使用しないで。私は、Bootstrap列の幅に応じて高さを適用するdivを四角形にする必要があります。それは本当に簡単なスクリプトでなければなりませんが、私は対処できません。ここで
は私のテンプレートです:
<div ng-controller="ControllerIndex as Ctrl" item-list>
<div ng-repeat="item in items" >
<div class="col-xs-4 object-list-container">
<div class="object-list" >
<p ng-bind-html="item.name"></p>
</div>
</div>
</div>
</div>
template.htmlは、ここに私のコントローラです:
angular.module('app').controller('ControllerIndex', function ($scope, $http, $element) {
$scope.items =[];
$http.get(baseUrl +'data/item.json').success(function(data){
$scope.items = data.item;
}).error(function(){
commonError();
});
は});
、ここで私のディレクティブ:
angular.module('app').directive('itemList', function($timeout){
return {
link: function ($scope, $element, $attrs) {
//I tried a lot of things
$timeout(function(){
var elements = document.getElementsByClassName("object-list");
console.log(elements); //Gives an array of 2
var elementsLenght = elements.length;
console.log(elementsLenght); //Gives 0!!!!!!
});
//Get the max height and set to the other div, but i can't enter this cycle
for (var i = 0; i < elementsLenght; i++) {
var elementHeight = elements[i].offsetHeight;
//console.log(elementHeight);
if (elements[i].offsetHeight > maxHeight) {
maxHeight = elementHeight;
}
}
//Attempt number 2
var angularElement = angular.element($element);
var elementObject = angular.element($element[0].querySelector('.object-list'));
console.log(elementObject); //Gives a T object with lenght 0
var xx = angular.element(elementObject[0]);
console.log(xx.offsetHeight);
console.log('elementObject: ', angular.element(elementObject[0])); //Gives html
}
}
});
私は私が何かが欠けていると思います。ありがとうございました!
@Arathi Sreekumarのお返事ありがとうございます。今、私は正しいelements.lenghtを取得するが、私は要素[i] .offsetHeightにアクセスするとき、私はconsole.log(要素[i])htmlと要素ではないので、私は0を得る。なぜ私に説明できますか?ありがとうございました! – SBO
要素[i]はhtml要素です。それは正しいです。要素[i] .offsetHeightを印刷してみてください。その印刷0、それはまだ残っているので、DOM上でレンダリングされていない可能性があります。私は実際にコードを見て、別のものを試していないと言うことはできません。 –
はい、印刷しています。もっと見たいものは何ですか? – SBO