Tôi đang sử dụng Angular & Bootstrap, với điều khiển tab điều hướng để chuyển đổi chế độ hiển thị của div. Trong một div, tôi có một img lớn (bản vẽ CAD của tòa nhà). Tôi cũng sau đó đánh dấu lớp phủ trên hình ảnh. Tôi muốn chia tỷ lệ vị trí x/y của các điểm đánh dấu dựa trên chiều rộng hình ảnh & image naturalWidth. Tôi đang sử dụng một chỉ thị thay đổi kích thước để phát hiện các thay đổi và cập nhật phạm vi của tôi.Làm cách nào để kích hoạt thay đổi kích thước sự kiện trong AngularJS
Vấn đề của tôi là nếu người dùng chuyển đổi tab và chuyển về div với CAD img, việc làm mới sẽ không xảy ra cho đến khi tôi đổi kích thước trình duyệt (hoặc đáng ngạc nhiên nếu tôi nhấn phím CMD trên máy Mac).
Có cách nào góc cạnh để kích hoạt sự kiện thay đổi kích thước để buộc các điểm đánh dấu của tôi được tính toán lại hay không. Hoặc là có một sự kiện tôi có thể gõ vào đó là bắn khi được hiển thị đầy đủ?
Hoặc có cách tiếp cận góc cạnh tinh tế hơn tôi nên dùng không?
Đây là HTML, chỉ thị thay đổi kích thước mà tôi đã viết nằm trên thẻ.
<div id="imageDiv" style="position: relative;" ng-show="selectedLocation" >
<img ng-src="../maps/image/{{selectedLocation}}"
style=" max-width: 100%; max-height: auto; border:solid 1px black" resize imageonload />
</div>
Và đây là chỉ thị thay đổi kích thước (chuyển thể từ http://jsfiddle.net/jaredwilli/SfJ8c/)
directive('resize', function($window) {
return function(scope, element) {
var w = angular.element($window);
scope.imgCadImage = element;
scope.getWindowDimensions = function() {
return {
'h' : scope.imgCadImage[0].width,
'w' : scope.imgCadImage[0].height
};
};
scope.$watch(scope.getWindowDimensions, function(newValue, oldValue) {
if (scope.imgCadImage[0].naturalWidth)
scope.imgScale = newValue.w/scope.imgCadImage[0].naturalWidth;
else
scope.imgScale = 1;
console.log("watched resize event - scale = "+scope.imgScale)
scope.updateCADMarkersAfterResize();
}, true);
w.bind('resize', function() {
console.log("'resize' - scale = "+scope.imgScale)
scope.$apply();
});
};
}).
Các bạn đã cố gắng thêm một thuộc tính dựa chỉ hành vi cho div chứa hình ảnh mà các cuộc gọi thay đổi kích cỡ trong nó 'liên kết' chức năng? –
@MarcKline - chức năng liên kết div là gì? Bạn có thể chỉ cho tôi một số thông tin khác về nó không. Tìm kiếm của Google không quá hữu ích. – Kevin
Hãy để tôi thực sự hỏi bạn điều này: là chỉ thị thay đổi kích thước của bạn a) gắn liền với hình ảnh hoặc vùng chứa của nó và b) nó có bị ràng buộc/kích hoạt bởi sự kiện 'window.resize' không? Sẽ hữu ích nhất nếu bạn có thể cung cấp một số giả mã chứng minh những gì bạn đã mô tả, nhưng nếu bạn có thể trả lời những câu hỏi đó, tôi có thể đoán được một giải pháp. –