Vue+Semanti-UI: 模态元素变了,只能运行 seccuess一次
Vue+Semanti-UI: modal element changed,only can run seccuess once
<button class="ui button" @click="beforeAdd">添加</button>
<div class="ui modal">
<div class="header">Header</div>
<div class="content">
<div class="description">
<p>Description</p>
</div>
</div>
<div class="actions">
<div class="ui negative right labeled icon button">
取消
<i class="remove icon"></i>
</div>
<div class="ui positive right labeled icon button">
提交
<i class="checkmark icon"></i>
</div>
</div>
</div>
查看方法:
beforeAdd(){
const modal = $(this.$el).find('.ui.modal')
console.log(modal)
modal.modal('show')
}
第一次点击,模态显示,第二次点击没有任何反应,我发现 div class='ui dimmer modals page transition hidden' 的语义变化模态到 root,如何解决
Semantic 正在将其从您的 $(this.$el)
中删除,因此下次它找不到它。
当您使用全局 $
和一个 id:
时它会起作用
show(){
const showModal = $('#mymodal')
console.log(showModal)
showModal.modal('show')
}
查看更新 fiddle。
如果您还想在模态中使用 Vue 变量,则需要克隆模态并仅显示克隆的版本。
使用这种方法,Vue 仍然能够跟踪原始模态,因为语义不会将其从 DOM.
中删除
beforeAdd(){
const modal = $(this.$el).find('.ui.modal').clone()
console.log(modal)
modal.modal('show')
}
<button class="ui button" @click="beforeAdd">添加</button>
<div class="ui modal">
<div class="header">Header</div>
<div class="content">
<div class="description">
<p>Description</p>
</div>
</div>
<div class="actions">
<div class="ui negative right labeled icon button">
取消
<i class="remove icon"></i>
</div>
<div class="ui positive right labeled icon button">
提交
<i class="checkmark icon"></i>
</div>
</div>
</div>
查看方法:
beforeAdd(){
const modal = $(this.$el).find('.ui.modal')
console.log(modal)
modal.modal('show')
}
第一次点击,模态显示,第二次点击没有任何反应,我发现 div class='ui dimmer modals page transition hidden' 的语义变化模态到 root,如何解决
Semantic 正在将其从您的 $(this.$el)
中删除,因此下次它找不到它。
当您使用全局 $
和一个 id:
show(){
const showModal = $('#mymodal')
console.log(showModal)
showModal.modal('show')
}
查看更新 fiddle。
如果您还想在模态中使用 Vue 变量,则需要克隆模态并仅显示克隆的版本。
使用这种方法,Vue 仍然能够跟踪原始模态,因为语义不会将其从 DOM.
中删除beforeAdd(){
const modal = $(this.$el).find('.ui.modal').clone()
console.log(modal)
modal.modal('show')
}