ไปงานปาร์ตี้ช้าไปหน่อยแม้ว่าฉันจะหาวิธีแก้ปัญหาเดียวกันไม่มากก็น้อยในระบบที่ฉันกำลังสร้าง
ความคิดของฉันคือจัดการimg
แท็กรูปภาพทุกรูปแบบทั่วโลก
ฉันไม่ต้องการพริกไทยHTML
ด้วยคำสั่งที่ไม่จำเป็นเช่นerr-src
ที่แสดงไว้ที่นี่ บ่อยครั้งโดยเฉพาะอย่างยิ่งกับภาพไดนามิกคุณจะไม่รู้ว่ามันหายไปหรือไม่จนกว่าจะสายเกินไป การเพิ่มคำสั่งพิเศษในกรณีที่ไม่มีโอกาสที่รูปภาพจะหายไปดูเหมือนจะเกินความจำเป็นสำหรับฉัน
แต่ฉันขยายimg
แท็กที่มีอยู่- ซึ่งจริงๆแล้วคือสิ่งที่คำสั่งเชิงมุมเป็นข้อมูลเกี่ยวกับ
นี่คือสิ่งที่ฉันคิดขึ้นมา
หมายเหตุ : สิ่งนี้ต้องการไลบรารี JQuery แบบเต็มเพื่อนำเสนอไม่ใช่แค่ JQlite Angular ที่มาพร้อมกับเพราะเรากำลังใช้.error()
คุณสามารถดูการทำงานได้ที่Plunkerนี้
คำสั่งมีลักษณะเช่นนี้:
app.directive('img', function () {
return {
restrict: 'E',
link: function (scope, element, attrs) {
// show an image-missing image
element.error(function () {
var w = element.width();
var h = element.height();
// using 20 here because it seems even a missing image will have ~18px width
// after this error function has been called
if (w <= 20) { w = 100; }
if (h <= 20) { h = 100; }
var url = 'http://placehold.it/' + w + 'x' + h + '/cccccc/ffffff&text=Oh No!';
element.prop('src', url);
element.css('border', 'double 3px #cccccc');
});
}
}
});
เมื่อเกิดข้อผิดพลาด (ซึ่งอาจเป็นเพราะไม่มีรูปภาพหรือไม่สามารถเข้าถึงได้ ฯลฯ ) เราจะจับภาพและตอบสนอง คุณสามารถลองรับขนาดรูปภาพได้เช่นกันหากมีอยู่ในรูปภาพ / สไตล์ตั้งแต่แรก ถ้าไม่เช่นนั้นให้ตั้งค่าเริ่มต้นให้ตัวเอง
ตัวอย่างนี้ใช้ placehold.it เพื่อแสดงรูปภาพแทน
ตอนนี้ทุกภาพโดยไม่คำนึงถึงการใช้งานsrc
หรือng-src
ครอบคลุมในกรณีที่ไม่มีอะไรโหลด ...