Vue.js - “绑定”引导模式到 Vue 模型

Posted

技术标签:

【中文标题】Vue.js - “绑定”引导模式到 Vue 模型【英文标题】:Vue.js - "Bind" bootstrap modal to Vue model 【发布时间】:2015-11-05 05:23:54 【问题描述】:

所以,在我的 Vue 实例中,我有一个 currentTask 模型,默认为空。

new Vue(
    el: '...',

    data: 
        currentTask: null
    
);

当我单击具有v-on="click: openTask" 指令的“任务项”时,我想使用 currentTask 启动模式:

methods: 
    openTask: function(e) 
        this.currentTask = this.clickedTask;
        $('#task-modal').modal('show');

        e.preventDefault();
    

这工作得很好,虽然我不知道是否有更“神奇”的方式将整个模态+可见性双向绑定到 currentTask。

现在,如果没有更好的方法来解决这个问题,我需要以某种方式侦听模态关闭事件,通常我们会在 jQuery 中使用 Vue 内部的 $('#myModal').on('hidden.bs.modal', function() ); 并设置 this.currentTask = null; 来执行此操作。

谢谢。

【问题讨论】:

【参考方案1】:

您或许可以使用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>

【讨论】:

它不起作用,我会尝试了解原因并回复。 我还没有找到为什么它不起作用。我在绑定、更新和取消绑定回调中有一个console.log('hello');,并且没有触发器,所以我猜该指令甚至没有被绑定。我在元素中做了&lt;div id="task-modal" v-task-modal class="modal fade" tabindex="-1" role="dialog"&gt;Vue.directive('task-modal', ...

以上是关于Vue.js - “绑定”引导模式到 Vue 模型的主要内容,如果未能解决你的问题,请参考以下文章

如何将输入绑定到 vue.js 模型

在 vue.js 的弹出模式中显示特定数据

无法 Vue.Js 引导模式

使用 vue.js 2.0 打开引导模式

Vue 入门指南 JS

Vue框架之基础