如何从模板 vue.js 2 调用 javascript?
How can I call javascript from template vue.js 2?
我的看法是这样的:
...
<td @click="modalShow('modal-option', '{{ $i }}')">
...
</td>
...
@section('modal')
<option-modal id="modal-option" :id="idModal"></option-modal>
@endsection
当点击视图时,它会显示模态如下:
<template>
<div class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
...
<div class="modal-body">
<a href="javascript:" class="text-danger" :id="'image-delete-' + id">
<span class="fa fa-trash"></span>
</a>
</div>
...
</div>
</div>
</div>
</template>
<script>
export default{
name: 'OptionModal',
props:['id'],
}
</script>
我用 vue.js 2
显示模态
当我点击垃圾桶图标时,我想调用javascript
我有全局 javascript。名字是main.js
main.js是这样的:
for(let i = 0; i < 5; i++) {
$('#image-delete-'+i).click(function(){
$('input[name="image-'+i+'"]').val('');
document.getElementById("image-view-"+i).style.display = "none";
document.getElementById("image-upload-"+i).style.display = "";
$('.modal').modal('hide');
});
}
当我点击模态中的垃圾桶图标时,javascript调用不成功
我该如何解决这个问题?
您通过 jQuery 添加的点击处理程序是否有效 完全 取决于您添加点击处理程序的 时间 。如果您在安装 Vue 之前添加点击处理程序,那么您的点击将永远不会触发。
这不行
for(let i = 0; i < 5; i++) {
$('#image-delete-'+i).click(function(){
...
});
}
new Vue(...)
这是一个example.
如果您在 mounted
中添加您的处理程序,那么您可以让它工作。
这应该有效
new Vue({
el:"#app",
data:{
},
mounted(){
for(let i = 0; i < 5; i++) {
$('#image-delete-'+i).click(function(){
...
});
}
}
})
最后,您可以以这种方式添加您的处理程序,何时添加它们并不重要。
for(let i = 0; i < 5; i++) {
$(document).on("click", `#image-delete-${i}`, function(){
...
});
}
但是,我不确定这是怎么回事,因为您提供的代码太少了。当然 理想 情况是让 Vue 定义处理程序。
我的看法是这样的:
...
<td @click="modalShow('modal-option', '{{ $i }}')">
...
</td>
...
@section('modal')
<option-modal id="modal-option" :id="idModal"></option-modal>
@endsection
当点击视图时,它会显示模态如下:
<template>
<div class="modal" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
...
<div class="modal-body">
<a href="javascript:" class="text-danger" :id="'image-delete-' + id">
<span class="fa fa-trash"></span>
</a>
</div>
...
</div>
</div>
</div>
</template>
<script>
export default{
name: 'OptionModal',
props:['id'],
}
</script>
我用 vue.js 2
显示模态当我点击垃圾桶图标时,我想调用javascript
我有全局 javascript。名字是main.js
main.js是这样的:
for(let i = 0; i < 5; i++) {
$('#image-delete-'+i).click(function(){
$('input[name="image-'+i+'"]').val('');
document.getElementById("image-view-"+i).style.display = "none";
document.getElementById("image-upload-"+i).style.display = "";
$('.modal').modal('hide');
});
}
当我点击模态中的垃圾桶图标时,javascript调用不成功
我该如何解决这个问题?
您通过 jQuery 添加的点击处理程序是否有效 完全 取决于您添加点击处理程序的 时间 。如果您在安装 Vue 之前添加点击处理程序,那么您的点击将永远不会触发。
这不行
for(let i = 0; i < 5; i++) {
$('#image-delete-'+i).click(function(){
...
});
}
new Vue(...)
这是一个example.
如果您在 mounted
中添加您的处理程序,那么您可以让它工作。
这应该有效
new Vue({
el:"#app",
data:{
},
mounted(){
for(let i = 0; i < 5; i++) {
$('#image-delete-'+i).click(function(){
...
});
}
}
})
最后,您可以以这种方式添加您的处理程序,何时添加它们并不重要。
for(let i = 0; i < 5; i++) {
$(document).on("click", `#image-delete-${i}`, function(){
...
});
}
但是,我不确定这是怎么回事,因为您提供的代码太少了。当然 理想 情况是让 Vue 定义处理程序。