Vuejs2 vue2js-如何在目录中使用选定的选择值传播选定索引

Vuejs2 vue2js-如何在目录中使用选定的选择值传播选定索引,vuejs2,jquery-chosen,vue-directives,Vuejs2,Jquery Chosen,Vue Directives,请看下面的代码。第一个选择框是使用创建的。当更改时,它应该将其更改的值传播到其绑定的cityid所在的模型。第二个法线选择框工作正常,其值已传播 Vue.指令'selected'{ 绑定:函数el,绑定,vnode,oldVnode{ Vue.nexttick函数{ $el.Selected{ 宽度:'100%' }.changefunction{ 警报$el.val; context.$emit'input',$el.val; }; }; }, 更新:functionel,binding,v

请看下面的代码。第一个选择框是使用创建的。当更改时,它应该将其更改的值传播到其绑定的cityid所在的模型。第二个法线选择框工作正常,其值已传播

Vue.指令'selected'{ 绑定:函数el,绑定,vnode,oldVnode{ Vue.nexttick函数{ $el.Selected{ 宽度:'100%' }.changefunction{ 警报$el.val; context.$emit'input',$el.val; }; }; }, 更新:functionel,binding,vnode,oldVnode{ } }; 新Vue{ el:“应用程序”, 数据:{ 城市ID:3, 城市:[ {id:1,值:'London'}, {id:2,值:'Newyork'}, {id:3,值:'drih'} ] } } 所选城市id{cityid} {{option.value}} {{option.value}}
当您在指令中发出时,您是从根节点发出事件并返回上下文。您需要从节点本身发出事件。您无权访问$emit事件,但可以检查已附加到节点的处理程序。在本例中,v-model正在应用更改处理程序。因此,如果您像这样编写指令,代码应该可以工作

Vue.directive('chosen', {
  bind: function (el, binding, vnode, oldVnode) {
    Vue.nextTick(function() {
      $(el).chosen({
        width:'100%'
      }).change(function(e){
        vnode.data.on.change(e, $(el).val())
      });
    });
  }
});
这是一个例子