【发布时间】:2019-11-19 12:22:00
【问题描述】:
我正在使用 v-for 循环并使用 Vue.directive 作为引导工具提示,它将绑定值设置为我从方法返回的字符串。有了新数据后,如何更改此绑定值?即使我的方法返回了新数据,它也不会更新。
我尝试创建一个数据变量并在我的方法中设置它并在我的指令中使用该变量,但它仍然没有改变。
Vue.directive('tooltip',
function(el, binding) {
$(el).tooltip({
title: binding.value,
placement: binding.arg,
trigger: 'hover'
});
});
<li v-for="(display_name, index) in displayNameList" class="nav-item">
<a v-tooltip:bottom="tabTooltipSet(index)" {{ display_name }}</a>
</li>
我希望 binding.value 更改为函数在调用时返回的任何内容,它最初会这样做。但是在设置了该值并且我的 displayNameList 可以完全更改之后,它不会相应地更新。因此,如果我的第一个选项卡设置为 DOG,然后我更改列表并将其设置为 CAT,则工具提示应该是 CAT 而不是 DOG。
【问题讨论】:
-
来自文档:bind:仅在指令第一次绑定到元素时调用一次。在这里您可以进行一次性设置工作
-
您是否将控制台日志记录放在该函数中?数据更改时根本没有调用它还是以错误的值再次调用它?就我个人而言,我对
$(el).tooltip持怀疑态度,不确定如果您在同一元素上再次调用它会如何。 -
@Bergur 就是这样,我需要多次执行此操作(当数据更改时)我可能完全滥用了该指令,但我不确定此时我需要什么。
-
@skirtle 再次使用正确的值调用它,但即使在数据更改后传入了正确的值,绑定值也不会改变。关于变通的任何想法?
-
@Turtle_Code 我不太明白,你说值是正确的,然后你说它不是。如果
binding.value的值在该函数中是正确的,那么这里就不存在 Vue 问题。更有可能是$(el).tooltip的问题。在添加新工具提示之前,请尝试使用$(el).tooltip('dispose')删除旧工具提示。