vue基础

文章介绍了Vue.js中如何绑定class和style样式,包括动态变化和内联样式。接着讨论了列表渲染的技巧,如过滤和排序,通过watch监听和computed属性实现数据过滤,以及使用sort函数进行列表排序。此外,还讲解了自定义指令的创建和Vue组件的生命周期。
摘要由CSDN通过智能技术生成

1.样式绑定

1.绑定class样式

利用v-band绑定vue data中的数据,通过事件的切换发生变化。
== :class"mood" ==

<div id="app">
        <!-- 绑定class样式,动态变化 -->
      <div class="basic" :class="mood" @click="changMood">{{name}}</div>

      <!--  -->
    </div>

js

 <script>
      const vm = new Vue({
        el: "#app",
        data: {
          name: "code袁",
          mood: "normal",
        },
        methods: {
          changMood() {
            this.mood = "happy";
          },
        },
      });
    </script>
2.绑定style样式

利用v-band绑定vue data中的数据,
:style="styleobjc’

<!-- style内敛样式 -->
      <div class="basic" :style="styleObjc">{{name}}</div>
  data: {
          styleObjc: {
            fontSize: "40px",
          },
        },

2.列表渲染

1.列表过滤
array.filter(function(currentValue,index,arr), thisValue)

在这里插入图片描述
返回值:
返回数组,包含了符合条件的所有元素。如果没有符合条件的元素则返回空数组。

列表过滤是通过对数组persons使用filter函数进行关键字过滤,返回包含name的数组值
data数据

data: {
          persons: [
            { name: "张三", age: "15" },
            { name: "李四", age: "25" },
            { name: "王五", age: "35" },
          ],
          keyWord: "",
          fillperson: [],
        },
1.1 watch监听
 watch: {
          keyWord: {
            immediate: true,
            handler(val) {
              // 数据过滤
              this.fillperson = this.persons.filter((res) => {
                return res.name.indexOf(val) !== -1;
                console.log(val);
              });
            },
          },
        },
1.2 computed
 computed: {
          fillperson() {
            return this.persons.filter((res) => {
              return res.name.indexOf(this.keyWord) !== -1;
            });
          },
        },

在这里插入图片描述

2.列表排序
2.1 sort()函数
var arr = [-2, -1, 0, 2, 1];
      arr.sort((a, b) => {
        // 降序a-b
        return a - b;
      });

结果为 -2,-1,0,1,2

var arr = [-2, -1, 0, 2, 1];
      arr.sort((a, b) => {
        // 升序b-a
        return b-a;
      });
2.2 列表排序
   new Vue({
        el: "#app",
        data: {
          persons: [
            { name: "张三", age: "45" },
            { name: "李四", age: "25" },
            { name: "王五", age: "35" },
          ],
          keyWord: "",
          typesort: 1,
        },
        // 计算属性
        computed: {
          fillperson() {
            const arr = this.persons.filter((res) => {
              return res.name.indexOf(this.keyWord) !== -1;
            });
            if (this.typesort) {
              arr.sort((p1, p2) => {
                return this.typesort === 1 ? p2.age - p1.age : p1.age - p2.age;
              });
            }
            return arr;
            console.log(arr);
          },
        },
      });

结果
在这里插入图片描述

3.自定义指令

自定义指令v-big

<span v-big="n"></span>

定义指令的实现
1.简化写法只实现bind和update

 directives: {
          big(element, binding) {
            element.innerText = binding.value * 10;
            console.log(element, binding);
          },
        },

2.全面

 fbind: {
            // 指令与元素成功绑定时
            bind(element, binding) {
              element.value = binding.value;
            },
            // 指令所在元素插入页面是
            inserted(element, binding) {
              element.focus();
            },
            // 指令所在模板重新解析时
            update(element, binding) {
              element.value = binding.value;
            },
          },

element 是实际的元素,banding是绑定的对象
指令与元素绑定时会被调用,指令所在的模块被重新解析是会调用。
注意:在自定义函数的this是window
在这里插入图片描述

4.vue生命周期

在这里插入图片描述

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

code袁

你的支持是我莫大的幸运

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值