首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vue包装器示例

Vue包装器示例
EN

Stack Overflow用户
提问于 2018-02-18 19:00:09
回答 3查看 478关注 0票数 2

有一个好的vue与select2集成的实例

我有个问题。

如果我们看一下代码的这一部分:

代码语言:javascript
运行
复制
mounted: function () {
    var vm = this
    $(this.$el)
      // init select2
      .select2({ data: this.options })
      .val(this.value)
      .trigger('change')
      // emit event on change.
      .on('change', function () {
        vm.$emit('input', this.value)
      })
  }

我不明白,为什么当我们改变select2的值时,this.value也会发生变化。我以为会有这样的记录:

代码语言:javascript
运行
复制
 .on('change', function () {
    this.value = $(this.$el).val()
    vm.$emit('input', this.value)
  })
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-18 20:22:03

写完之前的答案后,我意识到我错过了一些重要的东西:上下文。

在“小提琴”的第5行中,有这样一行:

var vm = this,为什么?

这是因为以后执行vm.$emit时,this.$emit将无法工作;上下文已经更改。

代码语言:javascript
运行
复制
  .on('change', function () {
      //this = select2 element

      vm.value // == 1
      this.value // == 2
      vm.$emit("input", this.value);

  })

发出事件的值不是组件的值,而是select2元素的值。

虽然组件上的value尚未更改,但新值已被广播给父级。

票数 1
EN

Stack Overflow用户

发布于 2018-02-18 19:35:04

由于v-model的工作方式,它的行为方式是这样的。你所看到的是一个双向绑定。如果selectedv-model="selected"中的值发生变化,则该值将向下推到组件中。

当调用vm.$emit('input', this.value)时,它告诉父变量更新任何正在侦听更改的变量,在本例中,selected会被推回组件,从而更改其值。

为了更简单地理解,这是事件的顺序:

  1. 选择2值变化
  2. select2值更改触发事件发射。
  3. 父级接收事件并更新selected
  4. 组件的值被分配给selected的新值
  5. 该值的监视程序将被触发,并使用新值更新select2。

不过,问得好。

警告:这样做是可以理解的,糟糕的做法。当与单向绑定一起使用时,它会破坏它的悲伤的方式。

票数 2
EN

Stack Overflow用户

发布于 2018-02-18 19:38:06

请注意模板中如何使用select2组件:

代码语言:javascript
运行
复制
<select2 :options="options" v-model="selected">
  <option disabled value="0">Select one</option>
</select2>

在Vue.js中,使用带有组件的v-model可以简化为:

代码语言:javascript
运行
复制
<your-component
    :value="selected"
    @input="value => { selected = value }">
</your-component>

因此,每次从组件发出事件时,父组件的值都会发生更改。

来源

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48855430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档