快乐的小跳哇 2019-07-19 22:08 采纳率: 0%
浏览 1631

vue的rules验证问题?

<aui-form-item label='接收岗位' prop='RecvPost'>
     <select-tree :is-strictly="false" v-model="branch.RecvPost" style="width:170px;" :props='{id:"id",label: "name",children: "children"}' :tree-data="RecvPostList" placeholder="请选择岗位" ></select-tree>
</aui-form-item>
data(){
   //在赋值之前便调用了,造成获得的数据是上次赋值的
    const validatePost = async(rule, value, callback) =>{
      this.changeFlag()
      console.log(this._data.flag+"k")
      if(this._data.flag == 0 ||this._data.flag == ''){
        callback("岗位不能为空")
      }else{
        callback() 
      }     
    }
   return{
      branch{
          RecvPost:[]
         }
      rules: {
        RecvPost: [
          {
            required: true,
            trigger:"change",
            validator: validatePost,
          }
        ]
      }
    }
 }
methods:{
    changeFlag(){
      console.log(this.branch.RecvPost.length+"i")
      if(this.branch.RecvPost.length == 0){
        this.flag = 0
      }else{
        this.flag = 1
      }
    },
}

select-tree是自定义组件,获得的数据是树形下拉复选框,现在问题是下拉框我选择了数据,但是this.branch.RecvPost.length还是为0,已知道是调用顺序的原因,虽然RecvPost数组里已推入数据,但是验证在RecvPost数组推入数据之前,所以造成changeFlag()方法里获取RevcPost.length的长度是上一次选择的长度,watch监听也用过,最基本的方法也用,都是同样的问题,求大佬帮解决啊(刚毕业的小生瑟瑟发抖的问道,可能描述的不太明白)
图片说明图片说明

  • 写回答

1条回答 默认 最新

  • KaSuo_ 2019-07-24 09:10
    关注

    flag改成branch.RecvPost相关的computed如何?

    'flag': function(){
        return (this.branch.RecvPost.length == 0)?0:1
    }
    
    
    评论

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥15 绘制多分类任务的roc曲线时只画出了一类的roc,其它的auc显示为nan
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?