vue开发实用小知识点

一、vue {{}}(Maustach标签)不知道的用法

在html中进行渲染时会经常用到{{}}进行渲染data中的数据

这里面可以直接是数据也可以是js表达式,不支持条件控制语句,但是支持三目运算{{true?1:0}}

甚至可以是vue中内置的过滤器(可以有多个过滤器),在表达式后方加过滤器,类似于linux的管道指令{{example | filter1 | filter2}}

如果不习惯{{}}可以在Vue.config中配置绑定的语法,Vue.config是一个对象,包含了Vue.js的所有全局配置

可以在Vue实例化前修改其中的属性  分隔符在Vue.config中源码定义如下:let delimiters=['{{','}}']

如果修改了默认的文本插值的分隔符:Vue.config.delimiters=["<%","%>"]则文本插值的语法

从{{exmple}}变为<%example%>

二、vue中$refs的用法

<divid="app">

<inputtype="text"ref="input1"class="input1"/>

<button@click="add">添加</button></div>

<script>

newVue({

             el:"#app",

             methods:{

                         add:function(){

                                  this.$refs.input1.value ="22";//this.$refs.input1 减少获取dom节点的消耗

                                               }

                             }

                      })

</script>

一般来讲,获取DOM元素,需document.querySelector(".input1")获取这个dom节点,然后在获取input1的值。

但是用ref绑定之后,我们就不需要在获取dom节点了,直接在上面的input上绑定input1,然后$refs里面调用就行。

然后在javascript里面这样调用:this.$refs.input1 这样就可以减少获取dom节点的消耗了

三、v-if v-show的区别

v-if是惰性的——————如果初始渲染时条件为假什么都不做,在第一次变为真时才开始局部编译

v-show元素始终被编译保存,只是简单的css切换

v-if有更高的切换消耗   而v-show有更高的初始渲染消耗,因此如果有需要频繁切换的的用v-show比较好,如果在运行时条件不太可能改变用v-if比较好

四、debounce vue在同步输入框的值与数据时的防抖

<input   v-model="msg"   debounce="5000">{{msg}}

此时如果在输入框中输入数据  msg不会立刻变化,而是会在5秒后变成输入的内容

这个在进行模糊搜索(就是每在输入框中输入一个自都会调服务)这种情况下可以用这个方法,

可以减少不必要的请求或者数据渲染

五、v-for+fileterBy方法

<div  v-for="n  in  10">hei!  {{$index}}</div>(此时的{{$index}}可以把便利的数组的下标显示出来)

输出结果: hei! 0

                  hei! 1

                  hei! 2

                  。

                  。

                  hei! 9 

<inputtype="text"v-model="searchInfo">

<ul>

<liv-for="i ininfo|filterBysearchInfoin 'name'">{{i.age}}</li>

</ul>

info:[{name:123213,age:123},{name:12321334,age:1234},{name:789,age:90},{name:1098,age:8976}],

//此时如果输入框终输入789那么渲染出的age就是90

五、为什么用Vue.$set()及其用法

在开始开发vue中遇到过这种问题,就是我在按钮上添加一个方法,这个方法的作用是改变data里一个b对象的某一个字段a的value,这个对象的a字段一开始是在界面上渲染出来的,此时点击这个按钮,发现渲染出来的这个字段还是开始渲染出来的初始值,没有任何变化,此时用vue调试工具发现,data中b对象的a字段的值已经改变。

因为vue文档中有这样的描述:如果在实例创建之后添加新的属性到实例上,它不会触发视图更新

如果想要实现值改变的同时视图也会更新就要用到vue.$set

this.$set(要改变属性值的对象或数组,属性的名字,要改成的值)

六、关于vue中的复选框,点一下会选中所有选项问题的解决

<table class="for-table">

    <th >日期

    <th>欠费金额

  <tr v-for="(item,index) indetailCurrent" :key="index">

    <td><input type="checkbox"  v-model="detailCollect" >

    <td v-text="item.date" >

    <td v-text="item.account">

</table>

data(){

return{

accountItem:null,

    detailCollect:[],//复选框选中的数据的集合

    }

}

看着是没什么问题的但是如果真的这样使用,会发现一个奇怪的现象,点击一个选项会选中所有的选项

解决方案:给复选框绑定一个value

<input type="checkbox"  v-model="detailCollect"  :value="item">

此时的复选框的v-model是一个数组   点击一次这个数组里面就会push进去一个:value绑定的item值    如果不加:value="item"选中一个所有的复选框都会被选中,这样的话点击一下detailCollect数组中就会push进去一个

选中的元素的对象了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 主要还是自己看的,所有内容来自官方文档。 介绍 Vue.js 是什么 Vue (读音 /vjuː/,类似于 vie...
    Leonzai阅读 8,734评论 0 25
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 10,494评论 0 29
  • ## 框架和库的区别?> 框架(framework):一套完整的软件设计架构和**解决方案**。> > 库(lib...
    Rui_bdad阅读 8,203评论 1 4
  • 每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的: 实例生命周期钩子 每个 Vue 实例...
    Timmy小石匠阅读 5,202评论 0 11
  • Vue 实例 属性和方法 每个 Vue 实例都会代理其 data 对象里所有的属性:var data = { a:...
    云之外阅读 6,738评论 0 6

友情链接更多精彩内容