这就是我最终为那些在未来再次遇到此问题的人所做的。
的Javascript
function ResizeToLargestElement(element) {
var maxHeight = -1;
if ($(element).length > 0) {
$(element).each(function() {
maxHeight = maxHeight > $(this).height() ? maxHeight : $(this).height();
});
$(element).each(function() {
$(this).height(maxHeight);
});
}
}
没有AngularJS
对于谁是不使用AngularJS这些功能,只需拨打ResizeToLargestElement()
当数据发生变化或窗口使用被调整
$(window).resize(function() {
ResizeToLargestElement('.AutoResizeToLargestElement');
});`
随着AngularJS
这个想法是打电话给每当$scope.Results
更改或窗口大小调整时,都会显示函数。
要知道$scope.Results
更改很容易,但要知道元素(绑定到它)完成渲染时不容易。要做到这一点,你需要一个AngularJS指令。
要知道,当窗口重新大小,使用angular.element($window).on('resize', function() {...});
HTML
<div class="row">
<div data-ng-repeat="s in Results" data-ng-repeat-finished> <!--ADDED Directive-->
<div class="col-xs-4">
<a href="#" class="thumbnail AutoResizeToLargestElement"> <!--ADDED Class-->
<div>
<img ng-src="{{s.ProductImage}}" class="img-responsive">
</div>
<div>
{{s.Store}} {{s.Category}} {{s.ProductName}}
</div>
</a>
</div>
<!--REMOVED clearfix-->
</div>
</div>
MyDirectives。JS
angular.module('myApp').directive('ngRepeatFinished', function ($timeout) {
return {
restrict: 'A',
link: function (scope, element, attr) {
if (scope.$last === true) {
$timeout(function() {
scope.$emit('ngRepeatFinished');
});
}
}
}
});
mycontroller.js
$scope.$on('ngRepeatFinished', function (ngRepeatFinishedEvent) {
ResizeToLargestElement(".AutoResizeToLargestElement");
});
angular.element($window).on('resize', function() {
ResizeToLargestElement(".AutoResizeToLargestElement");
});
注:这需要你包括在AngularJS $window
依赖列表。 I.E. angular.module('myApp').controller('....', ['...., '$window', ....]);
我认为唯一的选择是创建三个包含列'(COL-XS-4)'的里面做的每一个重复和每一个项目拆分为基础的适当的立柱在伯爵身上。我不知道如何做到这一点,所以我刚刚提出了这个问题。我用我的选择语言多次遇到这个问题。 –
我的解决方案不会让高度相等,你需要'jquery'。您将在加载完所有项目后循环,并将最小高度设置为与最大产品'div'相同。 –