Vue.js - "Bind" bootstrap 模态到 Vue 模型
Vue.js - "Bind" bootstrap modal to Vue model
因此,在我的 Vue 实例中,我有一个 currentTask
模型,默认情况下为 null。
new Vue({
el: '...',
data: {
currentTask: null
}
});
当我单击具有 v-on="click: openTask"
指令的 'task-item' 时,我想使用 currentTask:
启动模式
methods: {
openTask: function(e) {
this.currentTask = this.clickedTask;
$('#task-modal').modal('show');
e.preventDefault();
}
}
这工作得很好,虽然我不知道是否有更多 "magical" 方法来双向绑定整个模式 + 对 currentTask 的可见性。
现在,如果没有更好的方法来解决这个问题,我需要的是以某种方式侦听模态关闭事件,通常我们会在 jQuery 和 $('#myModal').on('hidden.bs.modal', function() {});
中这样做Vue 并设置 this.currentTask = null;
.
谢谢。
您或许可以使用 custom directive 来处理这个问题。
Vue.directive('task-selector', {
bind: function () {
var vm = this.vm;
var el = $(this.el);
el.on('hidden.bs.modal', function() {
vm.data.currentTask = 'whatever value you want here';
});
},
update: function (newValue, oldValue) {
// i don't think you have anything here
},
unbind: function () {
// not sure that you have anything here
// maybe unbind the modal if bootstrap has that
}
})
在您的 html 中,您需要像这样将此指令放在模态元素上...
<div id="task-modal" v-task-selector>
... modal body stuff here...
</div>
因此,在我的 Vue 实例中,我有一个 currentTask
模型,默认情况下为 null。
new Vue({
el: '...',
data: {
currentTask: null
}
});
当我单击具有 v-on="click: openTask"
指令的 'task-item' 时,我想使用 currentTask:
methods: {
openTask: function(e) {
this.currentTask = this.clickedTask;
$('#task-modal').modal('show');
e.preventDefault();
}
}
这工作得很好,虽然我不知道是否有更多 "magical" 方法来双向绑定整个模式 + 对 currentTask 的可见性。
现在,如果没有更好的方法来解决这个问题,我需要的是以某种方式侦听模态关闭事件,通常我们会在 jQuery 和 $('#myModal').on('hidden.bs.modal', function() {});
中这样做Vue 并设置 this.currentTask = null;
.
谢谢。
您或许可以使用 custom directive 来处理这个问题。
Vue.directive('task-selector', {
bind: function () {
var vm = this.vm;
var el = $(this.el);
el.on('hidden.bs.modal', function() {
vm.data.currentTask = 'whatever value you want here';
});
},
update: function (newValue, oldValue) {
// i don't think you have anything here
},
unbind: function () {
// not sure that you have anything here
// maybe unbind the modal if bootstrap has that
}
})
在您的 html 中,您需要像这样将此指令放在模态元素上...
<div id="task-modal" v-task-selector>
... modal body stuff here...
</div>