精华内容
下载资源
问答
  • 主要介绍了vue实现表单未编辑或未保存离开弹窗提示功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • 结合内置17种常用表单组件和自定义组件,再复杂的表单都可以轻松搞定。 文档 | github 演示项目: 开源的高品质微信商城 功能 自定义组件 可生成任何Vue组件 自带数据验证 轻松转换为表单组件 通过 JSON 生成...
  • vue表单时时保存功能

    2020-12-23 14:35:13
    vue表单时时保存功能 利用watch去监听表单的变化 watch:{ dataForm:{ handler:function (newVal,oldVal) { // console.log(newVal,'asdada',oldVal) setTimeout(()=> { this.holdChangeForm() },10000) ...

    vue表单时时保存功能

    • 利用watch去监听表单的变化

       watch:{
            dataForm:{
              handler:function (newVal,oldVal) {
                // console.log(newVal,'asdada',oldVal)
                setTimeout(()=> {
                  this.holdChangeForm()
                },10000)
                // this.holdChangeForm()
              },
              deep:true
            }
          },
      
    • 这个deep:true,官方解释该回调会在任何被侦听的对象的 property 改变时被调用,不论其被嵌套多深,通俗一点就是dataForm表单里面的值改变,就会触发你想要触发的函数,我这边触发的是保存函数,做了一个延迟

    • 而还有一个参数immediate: true,官方解释该回调将会在侦听开始之后被立即调用,意思就很明显了

    展开全文
  • 今天小编就为大家分享一篇Vue2实时监听表单变化的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 想要点击不同的tab切换提交信息,然后点击回到对应的tab是保存记录 <div class="btn_list"> //这个是循环上边的tab切换 <span :class="['genre',now == item.id ? 'cur' : '']" v-for="(item,index) in ...

    1111.png
    想要点击不同的tab切换提交信息,然后点击回到对应的tab是保存记录

    <div class="btn_list">
    //这个是循环上边的tab切换
                    <span :class="['genre',now == item.id ? 'cur' : '']" v-for="(item,index) in CarClassIf" :key="item.id" @click="changHan(item,index)" >{{item.name}}
                    </span> 
                </div>
                <div class="table" >
                    //循环的表单信息
                    <van-row gutter="20" class="table_row" v-for="(item, index) in list[now]" :key="index" >
                        
                        <van-col span="6" class="table_row_col1">
                            <input class="input_van" v-model="item.name"  placeholder="拆车件名称"/>
                        </van-col>
                        <van-col span="6" class="table_row_col2">
                            <input type="number" v-model="item.num" class="input_van"  placeholder="拆车件数量"/>
                        </van-col>
                        <van-col span="12" class="table_row_col3">
                            <van-icon name="cross" class="cha" @click="coldes(item,index)" />
                            <van-radio-group class="table_col_radio" v-model="item.isDestroy" direction="horizontal">
                                <van-radio :name='Number(0)'>未破损</van-radio>
                                <van-radio :name='Number(1)'>已破损</van-radio>
                            </van-radio-group>
                        </van-col>
                    </van-row>
                    <div class="icon"> 
                        <van-icon @click="addList" name="plus" />
                    </div>
    

    然后在切换tab的时候 click事件中

    changHan(item,index){
            this.now = item.id
            //获得当前点击的id是多少
    }
    

    在调用接口的时候 获取 tab的数据
    然后循环已他的id为key

    this.CarClassIf.forEach(i => {
                   this.$set(this.list,i.id,[])//将ID设置为key,value是空数组方便点击加号的时候push
          });
    

    qiqiqi.png
    上面这个样子

    点击数组里面的 “+”的时候需要给list里面push 数据

     let cope = {
         name:'',//名称
         num:'',//数量
         isDestroy:0,//单选按钮
     };
     this.list[this.now].push(cope);//push到对应的ID里面
    

    可能有点顺序不对,大致就是这样 给list对象添加key跟value
    努力学习中!!!!争取月入过万!!!!

    展开全文
  • 实现效果: 点击 “眼睛” 的时候显示与隐藏 代码: <!DOCTYPE html> <html lang="en">...link href="css/bootstrap.min.css" rel="external nofollow" rel="stylesheet">... margin-top:60p
  • Vue表单自动保存功能

    2020-02-21 19:24:49
    本文主要是对Vue可能的面试点进行梳理,平时还是要注重知识的积累和储备,才能游刃有余的应对工作和面试,部分题目会给出相关链接供详细学习。 组件通信相关问题 组件通信方式有哪些? 父子组件通信: props 和 ...

    关于底层实现原理,建议最好还是参照源码进行学习,有些原理相对比较复杂,很难通过一篇文章去深入理解,最终可能只是一知半解,面试时一深入提问,就露馅了。
    本文主要是对Vue可能的面试点进行梳理,平时还是要注重知识的积累和储备,才能游刃有余的应对工作和面试,部分题目会给出相关链接供详细学习。

    组件通信相关问题

    1. 组件通信方式有哪些?
      父子组件通信:
      props 和 event、v-model、 .sync、 ref、 $parent 和 $children
      非父子组件通信:
      $attr 和 l i s t e n e r s 、 p r o v i d e 和 i n j e c t 、 e v e n t b u s 、 通 过 根 实 例 listeners、 provide 和 inject、eventbus、通过根实例 listenersprovideinjecteventbusroot访问、vuex、dispatch 和 brodcast
      通信方式属于较基础的面试题,具体的可参考我的文章—— vue 组件通信看这篇就够了
    2. 子组件为什么不可以修改父组件传递的Prop?
      Vue提倡单向数据流,即父级 props 的更新会流向子组件,但是反过来则不行。这是为了防止意外的改变父组件状态,使得应用的数据流变得难以理解。如果破坏了单向数据流,当应用复杂时,debug 的成本会非常高。
    3. v-model是如何实现双向绑定的?
      v-model 是用来在表单控件或者组件上创建双向绑定的,他的本质是 v-bind 和 v-on 的语法糖,在一个组件上使用 v-model,默认会为组件绑定名为 value 的 prop 和名为 input 的事件。
      文章—— vue 组件通信看这篇就够了 中也有其详细介绍
    4. Vuex和单纯的全局对象有什么区别?
      Vuex和全局对象主要有两大区别:

    Vuex 的状态存储是响应式的。当 Vue 组件从 store 中读取状态的时候,若 store 中的状态发生变化,那么相应的组件也会相应地得到高效更新。
    不能直接改变 store 中的状态。改变 store 中的状态的唯一途径就是显式地提交 (commit) mutation。这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。

    1. 为什么 Vuex 的 mutation 中不能做异步操作?
      Vuex中所有的状态更新的唯一途径都是mutation,异步操作通过 Action 来提交 mutation实现,这样使得我们可以方便地跟踪每一个状态的变化,从而让我们能够实现一些工具帮助我们更好地了解我们的应用。
      每个mutation执行完成后都会对应到一个新的状态变更,这样devtools就可以打个快照存下来,然后就可以实现 time-travel 了。如果mutation支持异步操作,就没有办法知道状态是何时更新的,无法很好的进行状态的追踪,给调试带来困难。
      参考尤大大回答:
      www.zhihu.com/question/48…
      声明周期相关问题
    2. vue组件有哪些声明周期钩子?
      beforeCreate、created、beforeMount、mounted、beforeUpdate、updated、beforeDestroy、destroyed。
      有自己独立的钩子函数 activated 和 deactivated。
    3. Vue 的父组件和子组件生命周期钩子执行顺序是什么?
      渲染过程:
      父组件挂载完成一定是等子组件都挂载完成后,才算是父组件挂载完,所以父组件的mounted在子组件mouted之后
      父beforeCreate -> 父created -> 父beforeMount -> 子beforeCreate -> 子created -> 子beforeMount -> 子mounted -> 父mounted
      子组件更新过程:

    影响到父组件:
    父beforeUpdate -> 子beforeUpdate->子updated -> 父updted
    不影响父组件:
    子beforeUpdate -> 子updated

    父组件更新过程:

    影响到子组件:
    父beforeUpdate -> 子beforeUpdate->子updated -> 父updted
    不影响子组件:
    父beforeUpdate -> 父updated

    销毁过程:
    父beforeDestroy -> 子beforeDestroy -> 子destroyed -> 父destroyed
    看起来很多好像很难记忆,其实只要理解了,不管是哪种情况,都一定是父组件等待子组件完成后,才会执行自己对应完成的钩子,就可以很容易记住。
    相关属性的作用 & 相似属性对比

    1. v-show 和 v-if 有哪些区别?
      v-if 会在切换过程中对条件块的事件监听器和子组件进行销毁和重建,如果初始条件是false,则什么都不做,直到条件第一次为true时才开始渲染模块。
      v-show 只是基于css进行切换,不管初始条件是什么,都会渲染。
      所以,v-if 切换的开销更大,而 v-show 初始化渲染开销更大,在需要频繁切换,或者切换的部分dom很复杂时,使用 v-show 更合适。渲染后很少切换的则使用 v-if 更合适。
    2. computed 和 watch 有什么区别?
      computed 计算属性,是依赖其他属性的计算值,并且有缓存,只有当依赖的值变化时才会更新。
      watch 是在监听的属性发生变化时,在回调中执行一些逻辑。
      所以,computed 适合在模板渲染中,某个值是依赖了其他的响应式对象甚至是计算属性计算而来,而 watch 适合监听某个值的变化去完成一段复杂的业务逻辑。
    3. computed vs methods
      计算属性是基于他们的响应式依赖进行缓存的,只有在依赖发生变化时,才会计算求值,而使用 methods,每次都会执行相应的方法。
    4. keep-alive 的作用是什么?
      keep-alive 可以在组件切换时,保存其包裹的组件的状态,使其不被销毁,防止多次渲染。
      其拥有两个独立的生命周期钩子函数 actived 和 deactived,使用 keep-alive 包裹的组件在切换时不会被销毁,而是缓存到内存中并执行 deactived 钩子函数,命中缓存渲染后会执行 actived 钩子函数。
    5. Vue 中 v-html 会导致什么问题
      在网站上动态渲染任意 HTML,很容易导致 XSS 攻击。所以只能在可信内容上使用 v-html,且永远不能用于用户提交的内容上。
      原理分析相关题目
      这部分的面试题,只看答案部分是不够的,最好结合源码来分析,可以有更深的理解。我在之前的文章对某些源码做过分析的,会给出链接。
    6. Vue 的响应式原理
      如果面试被问到这个问题,又描述不清楚,可以直接画出 Vue 官方文档的这个图,对着图来解释效果会更好。

    Vue 的响应式是通过 Object.defineProperty 对数据进行劫持,并结合观察者模式实现。
    Vue 利用 Object.defineProperty 创建一个 observe 来劫持监听所有的属性,把这些属性全部转为 getter 和 setter。Vue 中每个组件实例都会对应一个 watcher 实例,它会在组件渲染的过程中把使用过的数据属性通过 getter 收集为依赖。之后当依赖项的 setter 触发时,会通知 watcher,从而使它关联的组件重新渲染。
    2. Object.defineProperty有哪些缺点?
    这道题目也可以问成 “为什么vue3.0使用proxy实现响应式?” 其实都是对Object.defineProperty 和 proxy实现响应式的对比。

    Object.defineProperty 只能劫持对象的属性,而 Proxy 是直接代理对象
    由于 Object.defineProperty 只能对属性进行劫持,需要遍历对象的每个属性。而 Proxy 可以直接代理对象。
    Object.defineProperty 对新增属性需要手动进行 Observe,
    由于 Object.defineProperty 劫持的是对象的属性,所以新增属性时,需要重新遍历对象,对其新增属性再使用 Object.defineProperty 进行劫持。
    也正是因为这个原因,使用 Vue 给 data 中的数组或对象新增属性时,需要使用 vm.$set 才能保证新增的属性也是响应式的。
    Proxy 支持13种拦截操作,这是 defineProperty 所不具有的。
    新标准性能红利
    Proxy 作为新标准,长远来看,JS引擎会继续优化 Proxy ,但 getter 和 setter 基本不会再有针对性优化。
    Proxy 兼容性差
    目前并没有一个完整支持 Proxy 所有拦截方法的Polyfill方案

    更详细的对比,可以查看我的文章 为什么Vue3.0不再使用defineProperty实现数据监听?
    3. Vue中如何检测数组变化?
    Vue 的 Observer 对数组做了单独的处理,对数组的方法进行编译,并赋值给数组属性的 proto 属性上,因为原型链的机制,找到对应的方法就不会继续往上找了。编译方法中会对一些会增加索引的方法(push,unshift,splice)进行手动 observe。
    具体同样可以参考我的这篇文章 为什么Vue3.0不再使用defineProperty实现数据监听?,里面有详细的源码分析。
    4. 组件的 data 为什么要写成函数形式?
    Vue 的组件都是可复用的,一个组件创建好后,可以在多个地方复用,而不管复用多少次,组件内的 data 都应该是相互隔离,互不影响的,所以组件每复用一次,data 就应该复用一次,每一处复用组件的 data 改变应该对其他复用组件的数据不影响。
    为了实现这样的效果,data 就不能是单纯的对象,而是以一个函数返回值的形式,所以每个组件实例可以维护独立的数据拷贝,不会相互影响。
    5. nextTick是做什么用的,其原理是什么?
    能回答清楚这道问题的前提,是清楚 EventLoop 过程。
    在下次 DOM 更新循环结束后执行延迟回调,在修改数据之后立即使用 nextTick 来获取更新后的 DOM。
    nextTick 对于 micro task 的实现,会先检测是否支持 Promise,不支持的话,直接指向 macro task,而 macro task 的实现,优先检测是否支持 setImmediate(高版本IE和Etage支持),不支持的再去检测是否支持 MessageChannel,如果仍不支持,最终降级为 setTimeout 0;
    默认的情况,会先以 micro task 方式执行,因为 micro task 可以在一次 tick 中全部执行完毕,在一些有重绘和动画的场景有更好的性能。
    但是由于 micro task 优先级较高,在某些情况下,可能会在事件冒泡过程中触发,导致一些问题(可以参考 Vue 这个 issue:github.com/vuejs/vue/i…),所以有些地方会强制使用 macro task (如 v-on)。

    注意:之所以将 nextTick 的回调函数放入到数组中一次性执行,而不是直接在 nextTick 中执行回调函数,是为了保证在同一个tick内多次执行了 nextTcik,不会开启多个异步任务,而是把这些异步任务都压成一个同步任务,在下一个tick内执行完毕。

    1. Vue 的模板编译原理
      vue模板的编译过程分为3个阶段:

    第一步:解析
    将模板字符串解析生成 AST,生成的AST 元素节点总共有 3 种类型,1 为普通元素, 2 为表达式,3为纯文本。
    第二步:优化语法树
    Vue 模板中并不是所有数据都是响应式的,有很多数据是首次渲染后就永远不会变化的,那么这部分数据生成的 DOM 也不会变化,我们可以在 patch 的过程跳过对他们的比对。

    此阶段会深度遍历生成的 AST 树,检测它的每一颗子树是不是静态节点,如果是静态节点则它们生成 DOM 永远不需要改变,这对运行时对模板的更新起到极大的优化作用。

    生成代码

    const code = generate(ast, options)
    复制代码通过 generate 方法,将ast生成 render 函数。
    更多关于 AST,Vue 模板编译原理,以及和 AST 相关的 Babel 工作原理等,我在 掌握了AST,再也不怕被问babel,vue编译,Prettier等原理 中做了详细介绍。
    7. v-for 中 key 的作用是什么?
    清晰回答这道问题,需要先清楚 Vue 的 diff 过程,关于 diff 原理,推荐一篇文章 my.oschina.net/u/3060934/b…
    key 是给每个 vnode 指定的唯一 id,在同级的 vnode diff 过程中,可以根据 key 快速的对比,来判断是否为相同节点,并且利用 key 的唯一性可以生成 map 来更快的获取相应的节点。
    另外指定 key 后,就不再采用“就地复用”策略了,可以保证渲染的准确性。
    8. 为什么 v-for 和 v-if 不建议用在一起
    当 v-for 和 v-if 处于同一个节点时,v-for 的优先级比 v-if 更高,这意味着 v-if 将分别重复运行于每个 v-for 循环中。如果要遍历的数组很大,而真正要展示的数据很少时,这将造成很大的性能浪费。
    这种场景建议使用 computed,先对数据进行过滤。
    路由相关问题

    1. Vue-router 导航守卫有哪些
      全局前置/钩子:beforeEach、beforeResolve、afterEach
      路由独享的守卫:beforeEnter
      组件内的守卫:beforeRouteEnter、beforeRouteUpdate、beforeRouteLeave
      完整的导航解析流程如下:

    导航被触发。
    在失活的组件里调用离开守卫。
    调用全局的 beforeEach 守卫。
    在重用的组件里调用 beforeRouteUpdate 守卫 (2.2+)。
    在路由配置里调用 beforeEnter。
    解析异步路由组件。
    在被激活的组件里调用 beforeRouteEnter。
    调用全局的 beforeResolve 守卫 (2.5+)。
    导航被确认。
    调用全局的 afterEach 钩子。
    触发 DOM 更新。
    用创建好的实例调用 beforeRouteEnter 守卫中传给 next 的回调函数。

    1. vue-router hash 模式和 history 模式有什么区别?
      区别:

    url 展示上,hash 模式有“#”,history 模式没有
    刷新页面时,hash 模式可以正常加载到 hash 值对应的页面,而 history 没有处理的话,会返回 404,一般需要后端将所有页面都配置重定向到首页路由。
    兼容性。hash 可以支持低版本浏览器和 IE。

    1. vue-router hash 模式和 history 模式是如何实现的?
      hash 模式:
      #后面 hash 值的变化,不会导致浏览器向服务器发出请求,浏览器不发出请求,就不会刷新页面。同时通过监听 hashchange 事件可以知道 hash 发生了哪些变化,然后根据 hash 变化来实现更新页面部分内容的操作。
      history 模式:
      history 模式的实现,主要是 HTML5 标准发布的两个 API,pushState 和 replaceState,这两个 API 可以在改变 url,但是不会发送请求。这样就可以监听 url 变化来实现更新页面部分内容的操作。

    http://www.jianshu.com/u/fa86f3cdaa11
    http://dabaoji666.blog.bokee.net/bloggermodule/blog_viewblog.do?id=39528219
    http://dabaoji666.blog.bokee.net/bloggermodule/blog_viewblog.do?id=39528143
    http://dabaoji666.blog.bokee.net/bloggermodule/blog_viewblog.do?id=39527972

    展开全文
  • 在可以使用Vue-Form-Builder时,为什么需要对表单进行编码?通过一些额外的步骤来渲染它:D 好处: 开发中的代码更少(无需自己执行<form> <div> <input> .... </div> </form> ) 易于维护,...
  • vue自动保存表单功能的实现

    千次阅读 2018-10-03 14:13:00
    最近想实现一个表单内容的自动保存,原来是想通过监听表单的change事件来解决.但后面想想,现在都是数据驱动了,监听数据变化就行了. 页面表单如下: <el-form label-width="100px" :model="modalFormData" ref=...

    最近想实现一个表单内容的自动保存,原来是想通过监听表单的change事件来解决.但后面想想,现在都是数据驱动了,监听数据变化就行了.
    页面表单如下:

       <el-form label-width="100px" :model="modalFormData" ref="modalFormData" :rules="formAddRules">
                            <el-form-item prop="name" label="控件ID:" v-if="typeof modalFormData.name != 'undefined'">
                                <el-input v-model="modalFormData.name" required placeholder=""></el-input>
                            </el-form-item>
                            ....
                            
     </el-form>
    

    按上所述,我只要监听modalFormData的变化即可
    监听方法如下:

    watch: {
           
                modalFormData:{
                    //注意:当观察的数据为对象或数组时,curVal和oldVal是相等的,因为这两个形参指向的是同一个数据对象
                    handler(curVal,oldVal){
                       // 自动保存方法
                      this.autoSave();
                    },
                    deep:true
                }
            }
    

    至此,自动保存表单的功能已完成!

    展开全文
  • vueelementui动态表单

    2019-08-12 02:38:21
    vue-element-ui动态表单
  • 主要介绍了vue项目实现表单登录页保存账号和密码到cookie功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
  • vue自定义表单生成

    2021-04-14 13:24:07
    表单生成文字发得算比较晚吧,因为最近又开始使用vue开发项目,管理系统用表单表格相当多,还是简单写了一个使用vue+element-ui,提高开发速度,增加可维护性,减少页面代码量,使用json串的方式管理表单更方便,react...
  • this.form = this.$options.data().form vue在创建页面是会把data数据绑定到option属性里,恢复只需要调用就可以了
  • 本篇文章主要介绍了Vue axios 中提交表单数据(含上传文件),具有一定的参考价值,有兴趣的可以了解一下
  • 提交按钮 <md-button type="primary" @click="onSubmit" round>提交</md-button> 绑定的onSubmit事件 onSubmit(){ Dialog.confirm({ title: '确认', content: '确认提交', ... console.log('[Dialo
  • vue页面关闭是保存表单 介绍 : 本文涉及一个长期存在的问题(至少从Access 2.0开始),在该问题中,另一个(主)窗体的子窗体中使用的窗体将在主窗体打开和打开期间进行任何临时和临时的设计更改。在使用中,自动...
  • Vue 表单保存离开页面提醒

    千次阅读 2020-03-13 14:29:42
    我们常常会遇到一种场景:一个页面表单内容特别多,吭哧吭哧的填写完了,正要点提交,但是手抖点到外面的某个地方,跳出去了,整个页面洗白白,前面的努力付诸东流。这种情况要是刚刚我点错的时候,有个提示信息拦着...
  • 主要介绍了vue单页面实现当前页面刷新或跳转时提示保存,在当前页面刷新或跳转时提示保存并可取消刷新,以防止填写的表单内容丢失,感兴趣的小伙伴们可以参考一下
  • // 监听form 内数据变化 弹窗关闭时 判断是保存按钮关闭还是 其他方式关闭。 // 保存按钮关闭正常调用接口即可,其他方式判断count // 如果是编辑,打开count数据为1,新增为0(这里刷新页面第一次点击新增也为1,后续...
  • 有ABCD四个表单,提交的时候同时校验(是的,后台管理系统的需求就是这样),巧用new promise。 实现的方法有很多种,我讲下自己觉得比较优雅的方式,欢迎各位大大的指正哈。 代码 let formArr=['formA','formB','...
  • 测试小姐姐让输入框不允许输入空格,安排。  刚开始用的下面这个方法,因为我是电脑端f12的情况下调试移动端,所以下面这个方法可以实现禁止输入空格,于是就打包测试上线了,上线后才发现真机中不支持,应该是pc端...
  • 【重点】Vue通过表单变化来提醒用户是否要保存 通过vue的监听去判断表单元素是否变化很省心,但是由于组件的值经常变化,这里需要特别注意赋值的影响,以及弄一些标识来进行判断是否有变化了 弄一个变化标识比如...
  • Vue获取表单的值

    千次阅读 2020-07-24 08:14:34
    Vue自带一个特别神奇的指令,v-model可以实现表单元素的值得双向数据绑定,举个例子: <input type="text" v-model="msg"> <p>{{msg}}</P> 当改变input的值,对应的p标签的值也会发生改变,修改p...
  • 第二种方法是在运营人员刷新或回退时,强提示运营人员有修改的数据尚未保存,询问是否继续。 无认采用哪一种方式,在技术实现上,我们需要首先能够监听到用户执行回退或刷新页面的动作。 实际上,当用户执行页面刷新...
  • 然后是主要用到了el-form表单有一个清空重置表单数据的事件方法resetField(),在子组件表单弹窗打开的时候清空一下,在关闭子组件表单弹窗的时候还需要调用resetField()去重置表单数据。这样编辑数据之
  • 设计器布局参考form-generator项目,基于vue和ant-design-vue实现的表单设计器,样式使用less作为开发语言,主要功能是能通过简单操作来生成配置表单,生成可保存的JSON数据,并能将JSON还原成表单,使表单开发更...
  • Vue防止表单重复提交

    千次阅读 2019-06-13 09:26:13
    --VUE表单校验JS--> <!--<script src="https://cdn.jsdelivr.net/vee-validate/2.0.0-rc.3/vee-validate.min.js"></script>--> <script src="../../static/js/vee-validate.min.js"></script> <!--...
  • vue自定义生成表单

    2021-03-16 16:35:49
    具体的组件看文档 效果图 依赖 在package.json 添加 "dependencies": { ... "vue": "^2.5.2", "vue-router": "^3.0.1" }, 然后 npm i 2.在index.html(和package.json同一级)添加 <link rel="sty

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,948
精华内容 5,179
关键字:

vue保存表单信息

vue 订阅