如何简单判断q-input组件是否处于错误状态?
判断q-input错误状态的简便方法
以下3种方案复杂度从低到高,可根据你的实际场景选择:
方案1:调整data-cy绑定位置(最推荐)
直接把data-cy="inputEmail"绑定在q-input组件根节点,而非内部原生input元素:<q-input data-cy="inputEmail" v-model="email" :error="isEmailInvalid" label="邮箱地址" />Quasar的
q-input处于错误状态时,根节点会自带error布尔属性,你可以直接通过属性判断状态,不需要查找祖先元素:- Cypress测试判断代码:
cy.get('[data-cy="inputEmail"]').should('have.attr', 'error') - 原生JS判断代码:
document.querySelector('[data-cy="inputEmail"]').hasAttribute('error')
- Cypress测试判断代码:
方案2:不修改data-cy绑定的简化选择器
如果你不方便调整data-cy的绑定位置,可通过closest方法自动匹配带错误标识的祖先节点,不需要手动数层级写复杂的父子选择器:- Cypress测试判断代码:
cy.get('[data-cy="inputEmail"]').closest('.q-field').should('have.class', 'text-negative') - 原生JS判断代码:
document.querySelector('[data-cy="inputEmail"]').closest('.q-field').classList.contains('text-negative')closest方法会自动向上遍历所有祖先节点匹配指定选择器,不受q-input内部DOM结构层级变化影响。
- Cypress测试判断代码:
方案3:组件内逻辑直接判断
如果你是在Vue组件内部判断状态,完全不需要操作DOM,直接读取q-input的error属性绑定的响应式变量即可,比如你给组件绑定的:error="emailError",直接判断emailError的布尔值就能拿到当前错误状态。
内容的提问来源于stack exchange,提问作者Running Turtle
相关产品推荐
相关产品推荐

