javascript - Vue.js 组件调用 data 属性内的方法

标签 javascript vue.js vuejs2 vue-component

我想将组件方法分配给数据变量,请参阅下面的示例代码。遗憾的是它不起作用,正确的方法是什么?

<li v-for="item in items" @click="item.action">
    {{ item.title }}
</li>
export default {
    data: () => ({
        items: [
            { title: "One", action: this.funcOne },
            { title: "Two", action: this.funcTwo },
        ]
    }),
    methods: {
        funcOne() {
            alert("Hi")
        },
        funcTwo() {
            alert("Hello")
        }
    }
}

最佳答案

尝试将 vue 实例 (this) 作为参数传递给数据函数 data: (vm) => 然后使用它 action: vm.funcOne

Vue.config.devtools = false;
Vue.config.productionTip = false;

new Vue({
  el: '#app',
      data: (vm) => ({ // vm the component instance this
        items: [
            { title: "One", action: vm.funcOne},
            { title: "Two", action: vm.funcTwo },
        ]
    }),
    methods: {
        funcOne() {
            alert("Hi")
        },
        funcTwo() {
            alert("Hello")
        }
    }
  })
<link type="text/css" rel="stylesheet" href="//unpkg.com/bootstrap/dist/css/bootstrap.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.16/vue.js"></script>


<div id="app" class="container">
<li v-for="item in items" @click="item.action">
    {{ item.title }}
</li>
</div>

关于javascript - Vue.js 组件调用 data 属性内的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64036164/

相关文章:

javascript - 使用 Vue JS 的下拉列表

javascript - 在生产中的 Nuxt 组件中没有调用挂载的钩子(Hook)(完全静态)?

vue.js - Vuetify 如何添加自定义主题

vue.js - 使用 nuxt-link 导航到不同页面上的 anchor /哈希不起作用

javascript - 如何在 Angular 4 中使用 ngModel 正确绑定(bind)数组?

vue.js - 为什么 "Error in render: TypeError: Cannot read property ' 过滤器' of undefined' 甚至返回已经可用的数据?

javascript - Angular项目没有运行

javascript - Vue.js 依赖选择

javascript - 通过React Native 'Share'组件共享图像

javascript - 如何根据 javaScript 中的条件从对象中删除值