vue-day2

绑定class样式

:class="" (v-bind的缩写)

修改vue维护的数据,而非直接操作dom

绑定style,内联样式,交给vue管理(要对象,或者数组)

font-size  ->  fontSize   换位驼峰

 

 

⭐⭐⭐vue条件渲染

v-show  底层 -> 调整style行内样式, display:none

v-if    dom节点都没了,彻底没了,没这个结构

 

选择:切换频率高,建议用v-show

 

 

template 最终渲染出来会被脱掉,注意:template只能配合v-if,不能配合v-show

好处:不用多写个div包裹<h2>破坏结构

 

 

 


⭐⭐⭐列表渲染

唯一标识也可以用index

in 也可以换成 of

 

 

重点是遍历数组!!!

key是vue在使用,在渲染为真实dom之后,dom上实际没有这个key

key原理讲解举例:特殊情况:

 

 

所以:数据的唯一标识最好由后端提供


 

列表过滤+列表排序

<div id="root">
    <h2>人员列表</h2>
    <input type="text" placeholder="搜索" v-model="keyWord">
    <button @click="sortRule = 2">按年龄升序</button>
    <button @click="sortRule = 1">按年龄降序</button>
    <button @click="sortRule = 0">默认</button>
    <ul>
        <li v-for="(item,index) in tempArr" :key="index">
            {{item.name}} - {{item.age}} - {{item.sex}}
        </li>
    </ul>
</div>
</body>
<script type="text/javascript">
    Vue.config.productionTip = false
    const vm = new Vue({
        el: '#root',
        data() {
            return {
                keyWord: '',
                sortRule: 0, // 0 默认,1 降序, 2 升序
                persons: [
                    {id: '001', name: '马冬梅', age: 18, sex: '女'},
                    {id: '002', name: '周冬雨', age: 20, sex: '女'},
                    {id: '003', name: '周杰伦', age: 14, sex: '男'},
                    {id: '004', name: '温兆伦', age: 13, sex: '男'}
                ]
            }
        },
        methods: {},
        // 基于计算属性实现
        computed: {
            tempArr() {
                const arr = this.persons.filter((p) => {
                    return p.name.indexOf(this.keyWord) !== -1
                })
                if (this.sortRule) {
                    arr.sort((p1, p2) => {
                        // 简化:三元表达式
                        if (this.sortRule === 1) {
                            return p2.age - p1.age
                        } else {
                            return p1.age - p2.age
                        }
                    })
                }
                return arr
            }
        }
    })
</script>

 

computed执行条件,computed里面所使用到的变量一旦发生变化,则computed会重新执行


 

⭐⭐⭐更新时的问题

vue检测数据的原理_对象

依赖于get set


 

两个api:

Vue.set(target,key,val) - 新增属性 - (三个参数)

vm.$set(vm._data.student, 'sex', '女') - 效果同上


 

Vue检测数组数据

不靠get set 

数组有几个方法会影响原数组,当Vue发现调用了某个对应的数组方法改变数组时,就承认有修改

并重新解析模板 

 

 

 

总结:

 


 

特殊:filter:数组api filter并未改变原数组


v-model收集表单数据:

 

过滤器

时间戳

 

开源网站

https://www.bootcdn.cn/

 

 

 

 

 

多个过滤器可以串联

timeFormater处理结果再传给mySlice

 

局部的,只有声明filters的这个vue实例可以使用

全局过滤器:声明在vue实例之前

 

 


 

自定义指令:

函数式:

 

第一个参数就是对应的真实dom元素

对象式(更全面):

对象里有三个固定的方(钩子),vue会在特定的时候去调用

 

注意,这样的指令是局部的,要定义为全局的,跟过滤器一样

要在声明vue之前定义出来

 

总结:

 

posted @ 2023-04-09 22:38  JoeyBoy  阅读(24)  评论(0)    收藏  举报