使用iview Form 的resetFields()在f12下报错

clipboard.png
vue+typescript的项目
<Form-item label="会员:" prop="username">

            <Row>
                <Col>
                <Input v-model="formValidate.username" style="width:863px;"></Input>
                <span style="color:red;">{{tip}}</span>
                <span style="color:red;">*</span>
                </Col>
            </Row>
        </Form-item>
reset() {
    let obj: any = this.$refs['formValidate']
    obj.resetFields()
}
   @Watch('$route')
onRoute(to: any) {
        this.reset()
}
由于我是需要跳转页面,所以才把reset()放在onRoute里面的
它提示的indexof of "undefined"如下:

clipboard.png
我编辑的页面表单有数据它好像就不会报错,表单没有数据的时候,它是最容易报错的...
它提示的indexOf of undefined,好像在说我的prop如果是数值类型的就没有indexOf,但是我把prop都改成字符串类型的了,它还是报错

这个bug有时有,有时没有,有点奇怪啊,help~

阅读 9.2k
4 个回答

你的 FormItem 是不是有某个用了 v-if 当你第一次 resetFields 的时候 v-if="true", 下一次 resetFileds 的时候 v-if="false" 也就是这个FormItem 所绑定的 props 找不到了就会报这个错,改成 v-show 就不会有问题了

  1. 使用 this.$refs 而不是 this.$ref
  2. 配合使用 this.$nextTick(() => {})
  3. el-form 中的 model / ref 以及 el-form-item 中的 prop 再检查一遍吧

2020年6月30日 10:55:49

下面我讲的纯属猜测,
你说容易报错,
1.应该是你在跳转页面的时候引起的,因为跳转执行的时候已经在另一个页面了,另一个页面里执行这个方法可能会报错....
2.你的path数据类型有问题,,,你可以在这里判断前,先把你的path转成string再试试

因为没有具体证病症的代码,所以纯属猜测...

一般来说cannot read property "" of undefined这样错误的原因
是试图这样调用: undefined.indexOf()
看你的代码也就是path这个变量是undefined, 也就是说this.prop是undefined.
看看this.prop的赋值过程是否有问题.

最后你说bug时有时无, 是不是this.prop是在异步调用中赋值的呢, 检查一下这个过程, 看看是否能真正定位到问题.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题