首页 > 解决方案 > 如何使用 Vue.js 将选定的键传递给函数并为其设置值?

问题描述

我试图将选定的键传递给函数并为其设置一个值。Vue 数据已经有密钥(htxt),我在编辑按钮事件中传递了密钥并获取传递的密钥并尝试为其设置提示对话框的值,但它不起作用。

<html>
    <head>
        <title>Vue.js Table Edit</title>
        <!-- UIkit CSS -->
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/uikit@3.3.1/dist/css/uikit.min.css" />

        <!-- UIkit JS -->
        <script src="https://cdn.jsdelivr.net/npm/uikit@3.3.1/dist/js/uikit.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/uikit@3.3.1/dist/js/uikit-icons.min.js"></script>
    </head>
    <body>
        <div id="Edit">
            <h3>{{ htxt }}<span uk-icon="icon: pencil" @click="onEdit('htxt')"></span></h3>
            <span>{{ stxt }}<span uk-icon="icon: pencil" @click="onEdit('stxt')"></span></span>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script>
            var edits = new Vue({
                el: '#Edit',
                data: {
                    htxt: 'How to change h3 text?',
                    stxt: 'How to change span text?'
                },
                methods:{
                    onEdit: function(val){
                        console.log("passed val:",val)
                        var retVal = prompt("Enter your name : ", "your name here");
                        this.htxt = retVal;
                        // I passed key to hold the value in onedit function and 
                        // I tried to set value to that key like this.val = retVal
                    }
                }
                
            })
        </script>
    </body>
</html>

标签: javascriptvue.js

解决方案


<html>
    <head>
        <title>Vue.js Table Edit</title>
        <!-- UIkit CSS -->
        <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/uikit@3.3.1/dist/css/uikit.min.css" />

        <!-- UIkit JS -->
        <script src="https://cdn.jsdelivr.net/npm/uikit@3.3.1/dist/js/uikit.min.js"></script>
        <script src="https://cdn.jsdelivr.net/npm/uikit@3.3.1/dist/js/uikit-icons.min.js"></script>
    </head>
    <body>
        <div id="Edit">
            <h3>{{ htxt }}<span uk-icon="icon: pencil" @click="onEdit('htxt')"></span></h3>
            <span>{{ stxt }}<span uk-icon="icon: pencil" @click="onEdit('stxt')"></span></span>
        </div>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
        <script>
            var edits = new Vue({
                el: '#Edit',
                data: {
                    htxt: 'How to change h3 text?',
                    stxt: 'How to change span text?'
                },
                methods:{
                    onEdit: function(val){
                        console.log("passed val:",val)
                        var retVal = prompt("Enter your name : ", "your name here");
                        this[val] = retVal;
                        // I passed key to hold the value in onedit function and 
                        // I tried to set value to that key like this.val = retVal
                    }
                }
                
            })
        </script>
    </body>
</html>

var data =  {
  htxt: 'How to change h3 text?',
  stxt: 'How to change span text?'
}

// ok
console.log(data['htxt'])
console.log(data.htxt)

// error, You are using this method
// console.log(data.'htxt')


推荐阅读