获取基于Vue数据模型属性的属性名称的值?

Ron*_*n C 2 javascript vue.js vuejs2

假设我有一个如下所示的div,我的目标是根据传递给该getClassText方法的vue数据模型属性的名称,将其css类设置为一些计算出的类字符串:

 <div :class="getClassText('lastName')">
Run Code Online (Sandbox Code Playgroud)

使用此javascript:

 new Vue({
        el: '#app',
        data: {
            firstName: '',
            lastName: ''
        },
        methods: {
            getClassText: function (fieldName) {
                var valueOfField = NeedHelpHere(fieldName);
                //some complex calculations based on the valueOfFild
                return resultOfComplexCalculations;

            }
        }
    });
Run Code Online (Sandbox Code Playgroud)

NeedHelpHere(fieldName)方法内部,我需要能够基于属性名称返回Vue数据模型属性的值。Vue如何做到?

注意:我意识到我可以在不使用lastName的情况下调用该方法,这将导致传递属性值。

<div :class="getClassText(lastName)">
Run Code Online (Sandbox Code Playgroud)

但是为了更好地理解Vue,我想知道如何调用将属性名作为字符串传递的方法,如下所示

<div :class="getClassText('lastName')">
Run Code Online (Sandbox Code Playgroud)

通过这种方法,在NeedHelpHere(fieldName)方法内部,我需要能够返回基于Vue数据模型属性的属性名称的值。Vue如何做到?

Bel*_*dak 6

如果您不希望直接传递值,可以这样做:

HTML:

  <div id="app">

    <div :class="getClassText('lastName')">fooo</div>

  </div>
Run Code Online (Sandbox Code Playgroud)

JS部分:

 new Vue({
        el: '#app',
        data: {
            firstName: '',
            lastName: 'my-class'
        },
        methods: {
            getClassText: function (fieldName) {
              if (this.$data.hasOwnProperty(fieldName)) {
                return this.$data[fieldName]
              }
              return
            }

        }
    });
Run Code Online (Sandbox Code Playgroud)

演示:http : //jsbin.com/rutavewini/edit?html,js,输出