Vue 笔记


1. vue 中替换数组内容的方法$set

for(let i in self.checked){
    self.$set(self.checked, i, false);
}

2. vue 通过splice操作数组并更新

splice(index,len,[item])它也可以用来替换/删除/添加数组内某一个或者几个值(该方法会改变原始数组)

  • index:数组开始下标
  • len: 替换/删除的长度, 添加的话为0
  • item:替换的值,删除操作的话 item为空

删除

//删除起始下标为1,长度为1的一个值(len设置1,如果为0,则数组不变)
var arr = ['a','b','c','d'];
arr.splice(1,1);
console.log(arr);  
//['a','c','d']; 

//删除起始下标为1,长度为2的一个值(len设置2)
var arr2 = ['a','b','c','d']
arr2.splice(1,2);
console.log(arr2); 
//['a','d']

替换

//替换起始下标为1,长度为1的一个值为‘ttt’,len设置的1
var arr = ['a','b','c','d'];
arr.splice(1,1,'ttt');
console.log(arr);        
//['a','ttt','c','d'] 

//替换起始下标为1,长度为2的两个值为‘ttt’,len设置的1
var arr2 = ['a','b','c','d'];
arr2.splice(1,2,'ttt');
console.log(arr2);       
//['a','ttt','d'] 

添加

//在下标为1处添加一项'ttt'
var arr = ['a','b','c','d'];
arr.splice(1,0,'ttt');
console.log(arr);        
//['a','ttt','b','c','d'] 

3. element UI 清空表单

// this.$options.data().formData 是初始数据
this.formData = this.$options.data().formData;

4. element v-for数组表单验证的方法

要在每个item设置 :rules和 :prop

item

<el-form-item
     label="名称"
     :prop="`labelContent.${index}.chineseName`"
     :rules="formRules.labelContentChineseName"
   >
     <el-input
       v-model="formData.labelContent[index].chineseName"
       :disabled="dialogType === 'edit'"
       placeholder="请输入标签名称"
     ></el-input>
   </el-form-item>

rules

formRules: {
     chineseName: [
       { required: true, message: "请输入标注集名称", trigger: "blur" },
       { validator: validateExist, trigger: "blur" }
     ],
     labelContentChineseName: [
       { required: true, message: "请输入标签名称", trigger: "blur" }
     ],
     labelContentEnglishName: [
       { required: true, message: "请输入标签英文", trigger: "blur" }
     ],
     wordSeparator: [
       { required: true, message: "请选择或输入分隔符", trigger: "blur" }
     ],
     filePath: [{ required: true, message: "请上传文件", trigger: "blur" }],
     englishName: [
       { required: true, message: "请输入标注集英文", trigger: "blur" },
       { validator: validateEng, trigger: "blur" }
     ]
   },

5. ele使用scrollBar组件隐藏横向滚动条

.el-scrollbar__wrap{
    overflow-x: hidden;
}

6. 重用相同组件的不同路由, 无法切换

开发人员经常遇到的情况是,多个路由解析为同一个Vue组件。问题是,Vue出于性能原因,默认情况下共享组件将不会重新渲染,如果你尝试在使用相同组件的路由之间进行切换,则不会发生任何变化。

const routes = [
  {
    path: "/a",
    component: MyComponent
  },
  {
    path: "/b",
    component: MyComponent
  },
];

如果你仍然希望重新渲染这些组件,则可以通过在 router-view 组件中提供 :key 属性来实现。

<template>
    <router-view :key="$route.path"></router-view>
</template>

7. 把所有Props传到子组件很容易

这是一个非常酷的功能,可让你将所有 props 从父组件传递到子组件。如果你有另一个组件的包装组件,这将特别方便。所以,与其把所有的 props 一个一个传下去,你可以利用这个,把所有的 props 一次传下去:

<template>
  <childComponent v-bind="$props" />
</template>

代替:

<template>
  <childComponent :prop1="prop1" :prop2="prop2" :prop="prop3" :prop4="prop4" ... />
</template>

8. 自定义 v-model

默认情况下,v-model 是 @input 事件侦听器和 :value 属性上的语法糖。但是,你可以在你的Vue组件中指定一个模型属性来定义使用什么事件和value属性——非常棒!

export default: {
  model: {
    event: 'change',
    prop: 'checked'  
  }
}

9. Prop自定义验证器

验证 Props 是 Vue 中的基本做法之一。

你可能已经知道可以将props验证为原始类型,例如字符串,数字甚至对象。你也可以使用自定义验证器——例如,如果你想验证一个字符串列表:

props: {
  status: {
    type: String,
    required: true,
    validator: function (value) {
      return [
        'syncing',
        'synced',
        'version-conflict',
        'error'
      ].indexOf(value) !== -1
    }
  }
}

10. 计算属性传参

通过闭包实现

:data="closure(item, itemName, blablaParams)"

computed: {
 closure () {
   return function (a, b, c) {
        /** do something */
        return data
    }
 }
}

11. ElementUI 动态表单验证

动态表单验证需要


文章作者: Assan
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Assan !
评论
  目录