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

时间:2017-04-19 21:40:58

标签: javascript vue.js vuejs2

假设我有一个像下面这样的div,我的目标是根据传递给getClassText方法的vue数据模型属性的名称将它的css类设置为一些计算的类字符串:

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

使用此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;

            }
        }
    });

NeedHelpHere(fieldName)方法中,我需要能够返回基于Vue数据模型属性的属性名称的值。如何用Vue完成?

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

<div :class="getClassText(lastName)">

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

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

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

1 个答案:

答案 0 :(得分:4)

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

HTML:

  <div id="app">

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

  </div>

JS Part:

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

        }
    });

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