Я подготовил элемент управления вводом тегов в Vue с группировкой тегов. Шаблоны включают в себя:
<script type="text/x-template" id="tem_vtags">
<div class="v-tags">
<ul>
<li v-for="(item, index) in model.items" :key="index" :data-group="getGroupName(item)"><div :data-value="item"><span v-if="typeof model.tagRenderer != 'function'">{{ item }}</span><span v-if="typeof model.tagRenderer == 'function'" v-html="tagRender(item)"></span></div><div data-remove="" @click="remove(index)">x</div></li>
</ul>
<textarea v-model="input" placeholder="type value and hit enter" @keydown="inputKeydown($event,input)"></textarea>
<button v-on:click="add(input)">Apply</button>
</div>
</script>
Я определил компонентный метод с именем .getGroupName()
, который работает с другой функцией с именем .qualifier()
, которая может быть установлена через реквизит.
Моя проблема: как только я добавляю какие-либо теги в коллекцию (.items
), когда я набираю что-нибудь в textarea для каждого нажатия клавиши .getGroupName()
, кажется, вызывается. Похоже, что ввод чего-либо в textarea приводит к перерисовке всех компонентов?
Знаете ли вы, как избежать такого поведения? Я ожидаю, что .getGroupName
будет вызываться только при добавлении нового тега.
Вот полный код:
https://codepen.io/anon/pen/bKOJjo?editors=1011 (я поместил debugger;
, чтобы ловить, когда время выполнения входит в .qualifier()
.
Любая помощь оценена.
Это человек