【问题标题】:Adding two computed class properties on a :class="{{}} {{}}" in Vue在 Vue 中的 :class="{{}} {{}}" 上添加两个计算类属性
【发布时间】:2019-12-08 05:04:18
【问题描述】:

我对 Vue 世界还很陌生,我很好奇我是否能够将 2 个计算属性应用于 :class。 我试过给每个道具一个空间:class="{{prop1}} {{prop2}}" 但是在重新加载时,内容将全部消失,因为似乎有问题。

有人知道这是否可能,或者这样做是否有好处?

背景故事

我正在创建一个输入,该输入将具有:class="{{showWhenButtonClicked}}" 和另一个在电子邮件无效时为其提供绿色输入或红色输入类名的输入。

如果有任何我遗漏的细节或更好的方法,请告诉我。谢谢!!

computed: {
  validateEmail() {
    var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
    return re.test(String(this.emailTo).toLowerCase())
  },
  showEmailInput() {
    return this.sendEmail ? 'hide-show-option' : 'hide-option-input'
  },
  displayEmailError() {
    return this.validateEmail() ? "valid-input" : "not-valid-input"
  }
},

<input :class="{{showEmailInput}} {{displayEmailError}}" placeholder="Enter Email..." v-model="emailTo" @blur="{{validateEmail}}" type="email">

【问题讨论】:

  • 这个answer 可能会有所帮助。

标签: css vue.js vuejs2 computed-properties


【解决方案1】:

试试这个

:class="prop1 + ' ' + prop2"

【讨论】:

    【解决方案2】:

    您可以使用array syntax 来应用类列表:

    &lt;input :class="[showEmailInput, displayEmailError]"/&gt;

    【讨论】:

    • 感谢 Nick G 和 @Mubashar Ahmed Hassan 这两个答案都有帮助并且奏效了!出于某种原因,我认为计算道具只能在 {{double curls}} 中使用
    • @Pwntastic 不,组件中的任何变量(数据、计算、道具等)都可以在没有花括号的模板中使用,只要您位于带有 @987654323 的属性内@(喜欢:class="someVariable"
    • 如果您尝试在 div 中呈现文本,例如:&lt;div&gt;{{someVariable}}&lt;/div&gt;,那么您确实需要 mustache 语法
    • 哦,完美!这有很大帮助!感谢所有提示!
    【解决方案3】:

    尼克的答案是迄今为止最好的答案。但是您也可以将类存储在计算变量中,我认为这可以清理代码:

      classList({ sendEmail, validateEmail }) {
        return [
          sendEmail ? 'hide-show-option' : 'hide-option-input',
          validateEmail ? "valid-input" : "not-valid-input"
        ]
      }
    

    或者你可以返回一个对象,但在这种情况下它不像数组那么简洁

      classObject({ sendEmail, validateEmail }) {
        return {
          'hide-show-option': sendEmail, 
          'hide-option-input': !sendEmail,
          'valid-input': validateEmail,
          'not-valid-input': !validateEmail
        }
      }
    

    当你开始在类中集成更复杂的逻辑时,上面的两个选项会更有意义。

    【讨论】:

    • 这是金子!我真的很喜欢阅读起来更容易,而不是拥有多个 Comp Props。我真的很感谢所有的建议!
    猜你喜欢
    • 2021-12-17
    • 2018-08-11
    • 2019-08-26
    • 2018-09-20
    • 1970-01-01
    • 2020-12-01
    • 2020-02-03
    • 2020-01-14
    • 2021-05-04
    相关资源
    最近更新 更多