vue复习3

高阶函数

// 2.for (let i in this.books) //直接拿到序号
      // let totalPrice = 0
      // for (let i in this.books) {
      //   const book = this.books[i]
      //   totalPrice += book.price * book.count
      // }
      //
      // return totalPrice

      // 3.for (let i of this.books) //直接拿到里面的item 
      // let totalPrice = 0
      // for (let item of this.books) {6
      //   totalPrice += item.price * item.count
      // }
      // return totalPrice
// 编程范式: 命令式编程/声明式编程
// 编程范式: 面向对象编程(第一公民:对象)/函数式编程(第一公民:函数)
// filter/map/reduce
// filter中的回调函数有一个要求: 必须返回一个boolean值
// true: 当返回true时, 函数内部会自动将这次回调的n加入到新的数组中
// false: 当返回false时, 函数内部会过滤掉这次的n
const nums = [10, 20, 111, 222, 444, 40, 50]

// let total = nums.filter(n => n < 100).map(n => n * 2).reduce((pre, n) => pre + n);
// console.log(total);

// let total = nums.filter(function (n) {
//   return n < 100
// }).map(function (n) {
//   return n * 2
// }).reduce(function (prevValue, n) {
//   return prevValue + n
// }, 0)
// console.log(total);

v-model的使用

实现了数据的双向绑定,在表单中使用的较多

在这里插入图片描述
v-model的原理
在这里插入图片描述

v-model修饰符

在这里插入图片描述

组件!!!

;;;;;

组件内部不能访问vue实例的数据,vue组件有自己保存数据的地方
在这里插入图片描述

父传子中的驼峰标识

在这里插入图片描述

子传父 通过自定义事件

在这里插入图片描述
在这里插入图片描述
1.子组件监听事件
2.在方法里面发射出去事件
3.在父组件的标签里监听发射过来的事件
4.在父方法里处理

父子组件直接访问

在这里插入图片描述
在这里插入图片描述
但是一般不会使用¥children方法,因为这方法拿到的是一个数组,里面包含子组件,组件数量变化后不方便使用。
一般使用$refs方法
在这里插入图片描述
这种方法可以访问到具体想访问的子组件,常用。

子访问父(基本不用)

使用¥parents
在这里插入图片描述

插槽 (slot)

在这里插入图片描述

具名插槽的使用

在这里插入图片描述
在替换进去的标签里写 slot=“名字”,就可以具体替换那个slot了

编译的作用域

在这里插入图片描述
在这里插入图片描述

作用域插槽

在这里插入图片描述
相当于对子组件的数据进行处理后展示


<div id="app">
  <cpn></cpn>

  <cpn>
    <!--目的是获取子组件中的pLanguages-->
    <template slot-scope="slot">
      <!--<span v-for="item in slot.data"> - {{item}}</span>-->
      <span>{{slot.data.join(' - ')}}</span>
    </template>
  </cpn>

  <cpn>
    <!--目的是获取子组件中的pLanguages-->
    <template slot-scope="slot">
      <!--<span v-for="item in slot.data">{{item}} * </span>-->
      <span>{{slot.data.join(' * ')}}</span>
    </template>
  </cpn>
  <!--<cpn></cpn>-->
</div>

<template id="cpn">
  <div>
    <slot :data="pLanguages">
      <ul>
        <li v-for="item in pLanguages">{{item}}</li>
      </ul>
    </slot>
  </div>
</template>
<script src="../js/vue.js"></script>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: '你好啊'
    },
    components: {
      cpn: {
        template: '#cpn',
        data() {
          return {
            pLanguages: ['JavaScript', 'C++', 'Java', 'C#', 'Python', 'Go', 'Swift']
          }
        }
      }
    }
  })
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值