【问题标题】:VueJS + V-IF : passing props gives container in computed?VueJS + V-IF:传递道具给容器计算?
【发布时间】:2019-05-08 10:23:33
【问题描述】:

所以我试图创建一个计算来评估我的道具的两个条件,但是当我在hasWebsite 中评估row 时,我得到了整个容器而不是得到道具值。我不知道为什么。

模板

<a v-if="hasWebsite(props.row)" class="btn btn-success" :href="props.supplier.websiteUrl" target="_blank"><i class="fa fa-eye"></i></a>

计算

computed: {
hasWebsite: function(row){
  console.log(row)
  return !!(row.status !== 100 && row.supplier.websiteUrl);
}

【问题讨论】:

  • Computed 是针对属性的,这看起来应该是一个方法

标签: javascript vue.js vuejs2 vue-component


【解决方案1】:

根据文档 - computed properties 不接受参数,而是表示具有自定义 getset 方法的变量。意思是,计算的属性是被访问的,而不是被调用的。

在你的情况下应该使用methods。当参数改变时,它将是响应式的并重新计算。

methods: {
  hasWebsite (row) {
    return !!(row.status !== 100 && row.supplier.websiteUrl);
  }
}

模板内的用法保持不变。

【讨论】:

    【解决方案2】:

    您应该使用方法而不是computed 属性:

      methods: {
         hasWebsite: function(row){
          console.log(row)
          return !!(row.status !== 100 && row.supplier.websiteUrl);
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-06
      • 2021-08-15
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 1970-01-01
      • 2020-04-07
      相关资源
      最近更新 更多