gpt4 book ai didi

javascript - 使用 jQuery 让 Vue 知道数据改变

转载 作者:搜寻专家 更新时间:2023-10-30 22:52:02 25 4
gpt4 key购买 nike

我做了一个小脚本,将一些“a”标签附加到“div”,以使用户能够从固定列表中选择正确的值(选项太多,因此选项会在用户选择后出现写了 3 个字母或更多)。

我有一个隐藏字段,它使用用户从列表中选择的 ID 进行更新。

我正在使用 jQuery 添加一个 onclick 事件。

我的问题是 Vue 不知道 jQuery 为隐藏字段设置的值,我不确定如何解决它。

代码如下:

$('#form_product').on("click", ".choiceOptions a-participant", function (e) {

var id = $(this).data("id"),
participant = $(this).data("participant"),
inputId = $(this).data("visualcontainer"),
$visualInput = $('#' + inputId);

// Set values for the shown input and the hidden input
$visualInput.siblings('input').val(id);
$visualInput.val(participant);

// Stop showing the participants
$visualInput.siblings('div').css('display', 'none');
})

vm = Vue.component('input-participant', {
template: '#input_participant',
props: ['id', 'label', 'value', 'maxlength', 'required', 'readonly'],
methods: {
findParticipants: function (visualId) {
var visualContainer = $('#' + visualId);
var value = visualContainer.val();
var list = visualContainer.siblings('div');

if (value.length > 0 && value.length < 3) {
list.html('<div>Keep typing...</div>');
this.toggleParticipants(true, visualId);
}
else if (value.length > 2) {

this.toggleParticipants(true, visualId);

list.html('<div>Loading...</div>');
this.$http.get(hazaar.url('api', 'participantLookup') + '?name=' + value
).then(function (response) {
list.html('');
$.each(response.data, function (key, value) {
list.append('<a-participant data-id="' + value.data.id + '" data-participant="' + value.data.participantName + '" data-visualcontainer="' + visualId + '">' + value.data.participantName + '</a-participant>');
});
});
}
else {
this.toggleParticipants(false, visualId);
}
},
toggleParticipants: function (doShow, visualId) {
var $visualInputOptionsContainer = $('#' + visualId).siblings('div');
if (doShow) {
if ($('#' + visualId).val().length > 0) {
$visualInputOptionsContainer.css('display', 'block');
}
}
else {
// A bit of a hacky way to do it, but it seems to work fine so far.
window.setTimeout(function () {
$visualInputOptionsContainer.css('display', 'none');
}, 150);
}
}
}
});

最佳答案

var vm = new Vue({
el:"#form_product"},
data:{
list:[]
}),
$(el).click(
function(){
vm.list=[]
})

比如这里需要动态改变图片,可以使用vue的代理代替jQuery

<div id="page" @click="proxyImage">
</div>

脚本

  var vm = new Vue({
el: '#page',
data: {
topic: {}
},
method: {
proxyImage: function (e) {
if (e.target.tagName.toUpperCase() === 'IMG') {
// do something
}
}
}
});

关于javascript - 使用 jQuery 让 Vue 知道数据改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40837656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com