首页 文章

一行条件不适用于Vue js中的数据

提问于
浏览
3

我有一个组件,它将具有名为 isVendorOrAgent 的数据,该数据应基于组件获取的属性 falsetrue . 当我把这个条件放在组件的数据部分时,它不起作用并且总是返回 false 但是当我把它放在 created() 并更改 created() 中的 isVendorOrAgent 时,它可以工作 .

我怎样才能做到这一点?

这是不起作用的条件:

data : () => {
   return {
      isVendorOrAgent : (this.entityName == "vendor" || this.entityName == "agent") ? true : false;
   }
}

但这在默认值为false时有效:

created(){
    if(this.entityName == "vendor" || this.entityName == "agent"){
      this.isVendorOrAgent = true;
    }
  }

1 回答

  • 4

    试试这个代码示例:

    data () {
      return {
        isVendorOrAgent: Boolean(this.entityName === "vendor" || this.entityName === "agent")
      }
    }
    

    有什么不同吗?

    • 现在 data 不是箭头函数,因为箭头函数不会改变上下文,所以 this 将不会是组件内部的内容

    • 我们现在存储 Boolean

    • 我们现在正在使用严格的平等 === ,这只是一个好习惯

    您还可以查看 computed 属性:https://vuejs.org/v2/guide/computed.html

    您的问题可以像这样解决:

    computed () {
      return {
        isVendorOrAgent: Boolean(this.entityName === "vendor" || this.entityName === "agent")
      }
    }
    

    如果您需要此属性进行反应,则第二种方式更可取 .

相关问题