javascript - 当 Vue.js 中我的对象中存在属性时有条件地显示块?
问题描述
我的Vue数据对象结构如下:
只有当我的表单发生错误时,addPersonForm.errors
对象才会填充如下:
现在在我的页面中,我试图addPersonForm.errors.name
通过执行以下操作来显示条件错误标签和类:
<form action="{{ route('business.queue.add') }}" method="POST" id="manual-add">
<div class="form-group" v-bind:class="{ 'has-error' : addPersonForm.errors }">
<label for="add-person-name">Customer Name</label>
<input type="text" class="form-control" name="name" id="add-person-name" v-model="addPersonForm.fields.name">
<template v-if="addPersonForm.errors">
<small class="form-text text-danger">@{{ addPersonForm.errors.name[0] }}</small>
</template>
<template v-else>
<small id="emailHelp" class="form-text text-muted">Name will be displayed internally and to the customer</small>
</template>
</div>
加载页面时,vue 会抛出一个错误,说Cannot read property 'name' of null
. 我怀疑这是因为addPersonForm.errors
加载时是空的。name
如果属性存在,有人可以帮助我如何正确显示条件标签吗?
(我知道该name
属性是一个数组,我只对有错误感兴趣,如果有则显示第一个)。
解决方案
v-if="addPersonForm.errors"
应该足以防止错误发生。您确定是这部分代码触发了问题吗?
在任何情况下,您都可以通过使用可选链接来确保不会出错
<!-- note the "?" -->
<small class="form-text text-danger">@{{ addPersonForm.errors?.name[0] }}</small>
推荐阅读
- python - 从 django 中的配置文件模型 __str__ 获取用户实例
- html - 只影响容器中的元素
- php - 如何使用 jQuery 在数组中获取日期?
- angular - bootsrap carousel 不适用于 angular 7
- create-react-app - create-react-app 只创建 package.json、package-lock.json 和 node_modules
- javascript - 如何使用 CryptoJS AES 两次使用 AES 加密
- python - 从变量sqlite python3 sqlalchemy中获取列名
- amazon-web-services - AWS Fargate 容器身份验证配置
- android - 使用较低的 Android API 捕获 WebView (chrome) 崩溃
- php - Str_replace not replacing completely