【问题标题】:Edit Vuejs data from component从组件编辑 Vuejs 数据
【发布时间】:2016-05-02 14:51:21
【问题描述】:

我正在使用带有两个组件和两个模板的 Vue.JS。它们被多次使用:

<compone v-show="! showcompone"></compone>
<compone v-show="! showcomptwo"></compone>

<comptwo v-show="! showcompone"></comptwo>
<comptwo v-show="! showcomptwo"></comptwo>

我的vuejs如下:

new Vue({
    el: '#app',
    data: function(){
        return {
            showcompone: true,
            showcomptwo: true,
        }
    }
});

我需要知道的是:如何让我的组件在点击时切换v-showdata?如何通过组件更改data 属性值?

有没有更好的方法来做到这一点?

【问题讨论】:

    标签: javascript vue.js


    【解决方案1】:

    Vue 可以为您处理事件,只需在您的组件上使用v-on 指令或简写@,例如:

    <button @click="showcompone = !showcompone">Toggle one</button>
    <button @click="showcomptwo = !showcomptwo">Toggle two</button>
    

    你传递给@click事件的是纯javascript,所以你可以用js调用一个函数或者你想要的任何东西

    【讨论】:

    • 尽管如此,我确信我已经读过 Evan(VueJS 开发人员)主张反对在 HTML 中分配值,因为它更难推理。建议直接在 HTML 中调用方法而不是赋值。
    • 嗯...但是我该怎么做呢?我可以将对象传递给方法函数吗?
    • 如果您的点击事件逻辑变得复杂,则很难内联阅读。因此,正如@TremendusApps 所说,最好的尝试是在组件的methods 属性中定义一个专用方法,然后在单击绑定中像@click="methodName" 一样调用它
    • 如果您的方法需要参数,只需执行@click="methodName(arg1, arg2, ...)"。您还可以访问 $event var 中的函数事件
    • 我解决了这个问题:@click="methodName('arg', $event)"methodName: function(arg, event = null){this[arg] = true) 这不是一个很好的解决方案,但它确实有效。 xD
    猜你喜欢
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2017-04-16
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多