我是AngularJS新手,使用Angular + Angular Mobile UI在phonegap中開發應用程序。AngularJS:在ng-repeat中爲div設置相同的高度
我有我的模板文件裏面的Bootstrap列的列表沒有使用jQuery。我需要在方括號列中應用響應寬度的高度。它應該是一個非常簡單的腳本,但我無法處理。
這裏是我的模板:
template.html
<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>
這裏是我的控制器:
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
}
}
});
我想我失去了一些東西。謝謝!
感謝您的回答@Aththi Sreekumar。現在我得到正確的elements.lenght,但是當我訪問元素[我] .offsetHeight我得到0,因爲如果我console.log(元素[我])它打印HTML而不是一個元素。你能解釋我爲什麼嗎?謝謝! – SBO
elements [i]是一個html元素。所以這是正確的。嘗試打印元素[i] .offsetHeight。如果它的打印0,那可能是因爲它仍然沒有在dom上渲染,不幸的是。我不能沒有看到代碼和嘗試不同的東西。 –
是的,它打印0.你需要看到更多? – SBO