Я столкнулся со странной проблемой с обработчиком vueJs @error, чего я хочу
do заключается в том, чтобы скрыть изображения с неработающими ссылками и вместо этого отобразить заполнитель, но если у меня, например, есть два изображения, и оба из них имеют неработающие ссылки, только первое изображение неработающей ссылки отображает заполнитель, а другое изображение с неработающей ссылкой просто отображается, сломанный логотип браузера по умолчанию
вот код, который я сделал для тестирования, я знаю, что это неправильный способ написания кода в Vue, но он был для целей тестирования
<div id = "app">
<img width = "25%" id = "img" src = "https://upload.wikimedia.org/wikipedia/commons/5/54/Wallpaper-img_0254.jpg" @error = "handle()">
<img width = "25%" id = "img" src = "https://images.pexels.com/photos/248797/pexels-photo-248797.jpeg?auto=compress&cs=tinysrgb&h=350" @error = "handle()">
<img v-show = "ifImageBroken" src = "https://via.placeholder.com/300">
<p>{{brokenText}}</p>
<HelloWorld/>
</div>
<script>
import HelloWorld from "./components/HelloWorld";
export default {
name: "App",
data () {
return {
ifImageBroken: false,
brokenText: ''
}
},
components: {
HelloWorld
},
methods: {
handle : function() {
document.getElementById('img').style.display = 'none'
this.ifImageBroken = true;
this.brokenText = 'unable to load image'
}
}
};
</script>
Я просто хотел знать, может ли эта директива @error обрабатывать несколько случаев неработающих изображений



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


У меня та же проблема, и я использую object для ее решения, потому что @error зависит от битых ссылок, но не от битых изображений внутри ссылок, поэтому я создаю что-то для переключения между ними.
<object data = "https://here the right image if not found will display the image inside img tag.jpg" type = "image/png">
<img src = "https://via.placeholder.com/300" alt = "Not found image">
</object>
В первом будет проверяться, найден ли :data в object или нет, если он не найден, он переключится на тег <img>, и здесь вы поместите свой образ-заполнитель,
Обновление 2: Я использую ваш код и обновляю его, надеюсь он сработает
<div id = "app">
<img width = "25%" id = "img" src = "https://upload.wikimedia.org/wikipedia/commons/5/54/Wallpaper-img_0254.jpg" @error = "imgPlaceholder">
<img width = "25%" id = "img" src = "https://images.pexels.com/photos/248797/pexels-photo-248797.jpeg?auto=compress&cs=tinysrgb&h=350" @error = "imgPlaceholder">
<p>{{brokenText}}</p>
<HelloWorld/>
</div>
<script>
import HelloWorld from "./components/HelloWorld";
export default {
name: "App",
data () {
return {
ifImageBroken: false,
brokenText: ''
}
},
components: {
HelloWorld
},
methods: {
imgPlaceholder(e) {
e.target.src = "https://via.placeholder.com/300"
}
}
};
</script>
Здесь я создаю новый метод, который принимает событие и заменяет текущее неработающее изображение URL-адреса другим.
да, если он динамический, но если это обычный URL с https, вы будете использовать data = "", если динамический URL вы будете использовать: data = ""
Я обновил ответ в data = "here right image link", и если правая ссылка на изображение не работает, он отобразит изображение внутри <img src = "here the not found image placeholder" >.
хммм, но вы вообще не используете @error, вы думаете, что это все еще может работать с @error, я имею в виду, может ли он работать с v-show, чтобы скрыть или показать заполнитель, но все еще сохраняя тег <object>
Я не использую @error в этом случае, потому что он не улавливает битые изображения, но улавливает битые URL-адреса, поэтому, если у вас есть загрузка поля в изображении, <object> заменит его другим изображением, но @error не поймает что-то вроде это, и да, вы можете использовать это с v-show
Таким образом, вы можете добавить более одного не найденного образа и добавить условия v-if для управления им без обработчика @error.
что вы имеете в виду, что он не улавливает битые изображения, это URL-адрес, который должен быть сломан, а не изображение, что я имел в виду в своем вопросе, это проверить, есть ли у нескольких изображений сломанные URL-адреса и как заменить все из них
Я думаю, проблема может быть в том, что у вас есть 2 элемента
imgс одинаковым значениемid. Стандартный HTML не допускает этого, поскольку идентификатор должен быть уникальным. Если у вас есть несколько элементов с одним и тем жеid, только (я считаю) первый будет работать сgetElementById.