Vue内联模板即使发出也不会触发方法

我想知道我在这里做错了什么,从中我可以看到这是解决方案:Vue: method is not a function within inline-template component tag

但是该方法仍未触发。

$project

更新

因此@click允许我触发事件,但这导致表无法使用showFilters更改后的数据进行更新。多亏了MattBoothDev,我发现了基于事件的数据刷新,但是现在奇怪的是,它阻止了数据的更改。即如果field.showFilters为true,则单击按钮为true。

  <b-table
      :items="filtered"
      :fields="fields"
      sort-icon-left
      responsive="sm"
      @card-click="setUpdate"
    >
      <template v-slot:head()="data">
        <span class="text-info">{{ data.label.toUpperCase() }}</span>
        <button @click="$emit('card-click',data)">filter</button>
        <input
          v-show="data.field.showFilters"
          v-model="filters[data.field.key]"
          :placeholder="data.label"
        />
      </template>
    </b-table>

  methods: {
    setUpdate(field) {
      console.log("hello");
      console.log(field);
      this._originalField = Object.assign({},field);
      field.showFilters = true;
    }
  }
TOTTI128 回答:Vue内联模板即使发出也不会触发方法

您似乎正在使用Bootstrap Vue?

您实际上在这里所做的是将侦听器放在<b-table>的{​​{1}}标记上,但是该事件实际上不在{{1的 child 组件内发生}}。

无论如何,我什至不确定您是否需要此活动。

card-click

可以很容易地成为

<b-table>

编辑:

将MVVM也用于Vue.js是一个好习惯。

而不是:<button @click="$emit('card-click',data)">filter</button>

应为:<button @click="setUpdate(data)">filter</button>

然后:

@click="$emit('card-click',data)"

这将使您的代码测试变得更加容易。

本文链接:https://www.f2er.com/3108804.html

大家都在问