Я довольно новичок в Vue. js & Buefy, и я думаю, что понимаю, почему это происходит, но не знаю, как это исправить.
У меня есть список партнеров по проекту, отсортированный по страна и мне нужно вывести список с флажками (я все равно использую Buefy на странице) и названия стран в качестве заголовка (только когда есть «новая» страна). Это заканчивается тем, что браузер выполняет бесконечное l oop (проверено с помощью console.log) и Vue Devtools выдает предупреждение «Возможно, у вас есть бесконечное обновление l oop в функции рендеринга компонента».
Я считаю, это происходит потому, что изменение prevTitle запускает повторный рендеринг. Я знаю, что невозможно передать параметры вычисляемым свойствам, и я не смог использовать какие-либо хитрости, которые я нашел, чтобы сделать там доступным partner.country.
var app = new Vue({
el: "#app",
data: {
prevTitle: ""
...
methods: {
changeCountryTitle(country) {
if (country != this.prevTitle) {
this.prevTitle = country;
return true;
}
return false;
}
<template v-for="partner in results">
<div v-if="changeCountryTitle(partner.country)">
{{ partner.country }}
</div>
<b-checkbox ... >{{ partner.name }}, ...</b-checkbox>
<br />
</template>
Затем я попытался создать вычисляемое свойство, где я выполняю всю обработку вместо l oop в шаблоне и возвращаю строку, содержащую все, включая теги Buefy, которые будут называться
<span v-html="printPartnerList"></span>
Но эти теги Buefy не отображается неправильно, работают только теги HTML, браузер игнорирует теги Buefy, отображающие только обычный текст.
Есть идеи, как это работает? В настоящее время я печатаю названия стран для каждого партнера после имени et c. но это не так, как это должно работать.