Tôi đang cố gắng sử dụng lệnh Angular JS để căn giữa nội dung của div.Làm thế nào để gọi một hàm trong một chỉ thị Góc sau khi các nút con đã được xử lý?
Đây là phiên bản đơn giản của mẫu:
<div id="mosaic" class="span12 clearfix" s-center-content>
<div ng-repeat="item in hits" id="{{item._id}}" >
</div>
</div>
Đây là chỉ thị:
module.directive('sCenterContent', function() {
var refresh = function(element){
var aWidth= element.innerWidth();
var cWidth= element.children()[0].offsetWidth;
var cHeight= element.children()[0].offsetHeight;
var perRow= Math.floor(aWidth/cWidth);
var margin=(aWidth-perRow*cWidth)/2;
if(perRow==0){
perRow=1;
}
var top=0;
element.children().each(function(index, child){
$(child).css('margin-left','0px');
if((index % perRow)==0){
$(child).css('margin-left',margin+'px');
}
});
};
return {
link : function(scope, element, attrs) {
$(window).resize(function(event){
refresh(element);
});
}
};
});
Về cơ bản nó nổi một số divs bên trong và bổ sung thêm một lề để div đầu tiên trong mỗi hàng, để nội dung được căn giữa.
Tính năng này hoạt động tốt khi trình duyệt được thay đổi kích thước. Sự cố xảy ra khi tôi cố gắng làm mới sau khi khởi chạy.
Tôi đã thử với chức năng liên kết bài đăng như được thấy trong this question. Các liên kết trước và các chức năng liên kết bài viết được gọi theo thứ tự mong đợi nhưng không phải sau khi trẻ em của elemenet với chỉ thị s-center-content được hiển thị. Cuộc gọi để làm mới không thành công vì không tìm thấy trẻ em nào.
Làm cách nào để thực hiện cuộc gọi để làm mới đảm bảo trẻ em đã được xử lý?
Thực hiện tốt, điều này rất tiện dụng! Tôi sẽ cố gắng tìm các chủ đề nhóm google và các vấn đề trong góc mà nói về vấn đề này và tôi sẽ tham khảo câu trả lời của bạn. –
Cảm ơn vì nỗ lực của Roy. –
Nếu bạn nhìn vào các plugin [code] (https://github.com/brandonaaron/livequery/blob/master/jquery.livequery.js), bạn sẽ thấy rằng nó cũng sử dụng 'setTimeout (fn, 20)' để phù hợp với các yếu tố mới. Vì vậy, một giải pháp bẩn của nó trong 'gói' thân thiện. – FelikZ