computed和methods

返回的字段为数字,需要转为对应的状态值,可以使用computed或者methods定义方法
举个栗子:

<el-table-column
    label="报警点位 (二次码)"
    prop="twoCode"
    show-overflow-tooltip
    align="left"
    min-width="10%"
>
    <template slot-scope="scope">
            <div>{{showLabel(scope.row.la_make,scope.row.la_loop,scope.row.la_point)}}</div>
    </template>
</el-table-column>

//在computed里面定义showLabel

computed:{
    showLabel(la_make,la_loop,la_point){
        return function(la_make,la_loop,la_point){
            if (la_make && la_loop && la_point) {
                    return la_make + '号主机' + la_loop + '回路' + la_point + '点位';
                } else {
                    return '--';
                }
        }
    },
}

//在methods里面定义showLabel
mtthods:{
    showLabel(la_make,la_loop,la_point){
        if (la_make && la_loop && la_point) {
                return la_make + '号主机' + la_loop + '回路' + la_point + '点位';
            } else {
                return '--';
            }
    },
}

理解:关于二者的不同,看看看见了一个说明,细细品一下

computed是属性调用,而methods是函数调用,
这意味着在HTML的插值里,computed定义的方法是以属性访问的形式来调用,如 {{reversedMessageComputed}}
methods定义的方法,则要加上 () 来调用,如 {{reversedNameMethod()}} ,否则视图中会渲染出如下内容
function () { [native code] }

在上面的调用里,使用的是showLabel(scope.row.la_make,scope.row.la_loop,scope.row.la_point),后面是有括号()的,所以在computed里面其实是不可以调用的,会出现未定义,因为是属性调用,不能加括号
computed和methods
而通过曲线救国,在computed是返回了一个函数,所以可以加括号调用

如果直接写在methods里面,那么有括号,当然就可以直接调用了,因为写在methods里面就代表了是一个函数

猜你喜欢

转载自blog.51cto.com/9161018/2645115
今日推荐