vue 父子组件 基础应用scrollball v-model sync
1.父组件App
<template>
<div id="app">
<!--
<ScrollBall @input="input" :value="posStart" color="green" :target="posTarget"></ScrollBall>-->
<!-- v-model 底层 实现@input="input" :value="posStart" 父组件中不需要写 input函数 v-model底层会自己写赋值-->
<ScrollBall v-model="posStart" color="yellow" :target="posTarget"></ScrollBall>
<ScrollBall ref="ball2" :value.sync="posStart" color="red" :target="posTarget"></ScrollBall>
<!--
<ScrollBall @update:value1 ="input" :value1="posStart" color="red" :target="posTarget"></ScrollBall>
-->
<button @click="stopHandle"> stop </button>
</div>
</template> <script>
import ScrollBall from "./components/ScrollBall.vue";
export default {
name: "app",
beforeUpdate() {
// console.log(this.posStart);
},
data() {
return {
posStart: 160,
posTarget: 400
};
},
components: {
ScrollBall
},
methods: {
stopHandle(){
this.$children.forEach(ele=>{
ele.stop();
});
console.log(this.$children);
// this.$refs.ball2.stop();
}
/* input(value) {
this.posStart = value;
}*/
}
};
</script> <style lang="less">
</style>
2.子组件
<template>
<div class="ball" :style="style" :id="ballId"></div>
</template> <script>
export default {
name: "ScrollBall",
mounted(){
let ball = document.getElementById(this.ballId);
//页面加载后让小球运动
let fn = () => {
let left = this.value;
// console.log("left:",left);
if(left >= this.target){
return cancelAnimationFrame(this.timer);
}
// left += 5;
this.$emit("input",left+1); //交给父亲去改
this.$emit("update:value",left+1);
ball.style.transform = `translate(${left}px)`;
this.timer = requestAnimationFrame(fn);
}
this.timer = requestAnimationFrame(fn); //此函数只执行一次
},
props: {
color: {
type: String,
default:"white"
},
value:{
type:Number,
default:0
},
target:{
type:Number,
default:0
}
},
computed: {
style(){
return {background:this.color}
},
ballId(){
return "ball"+this._uid;
}
},
methods:{
stop(){
cancelAnimationFrame(this.timer);
}
}
};
</script>
<style lang="less">
.ball {
width: 100px;
height: 100px;
border: 1px solid #000;
border-radius: 50%;
box-sizing: border-box;
}
</style>
涉及的知识点:
vue 父子组件 基础应用scrollball v-model sync的更多相关文章
- vue父子组件传值加例子
例子:http://element-cn.eleme.io/#/zh-CN/component/form 上进行改的 父传子:用prop:子组件能够改变父组件的值,是共享的,和父操作是 ...
- 关于Vue父子组件传值(复杂数据类型的值)的细节点
vue 父子组件传值是很常见的,多数情况下都是父传递给子的值是基础数据类型,如string,number,boolean, 当父组件值被修改时,子组件能够实时的作出改变. 如果父子传值的类型是复杂数据 ...
- vue父子组件状态同步的最佳方式续章(v-model篇)
大家好!我是木瓜太香!一名前端工程师,之前写过一篇<vue父子组件状态同步的最佳方式>,这篇文章描述了大多数情况下的父子组件同步的最佳方式,也是被开源中国官方推荐了,在这里表示感谢! 这次 ...
- vue父子组件之间传值
vue父子组件进行传值 vue中的父子组件,什么是父组件什么是子组件呢?就跟html标签一样,谁包裹着谁谁就是父组件,被包裹的元素就是子组件. 父组件向子组件传值 下面用的script引入的方式,那种 ...
- vue父子组件的传值总结
久违的博客园我又回来了.此篇文章写得是vue父子组件的传值,虽然网上已经有很多了.写此文章的目的就是记录下个人学习的一部分.接下来我们就进入主题吧! 在开发vue项目中,父子组件的传值是避免不掉的. ...
- 【转】vue父子组件之间的通信
vue父子组件之间的通信 在vue组件通信中其中最常见通信方式就是父子组件之中的通性,而父子组件的设定方式在不同情况下又各有不同.最常见的就是父组件为控制组件子组件为视图组件.父组件传递数据给子组件使 ...
- Vue父子组件生命周期
转载自:https://blog.csdn.net/a8725585/article/details/79092505 vue父子组件钩子函数触发顺序 beforeMount后mounted前构造子组 ...
- vue 父子组件通信详解
这是一篇详细讲解vue父子组件之间通信的文章,初始学习vue的时候,总是搞不清楚几个情况 通过props在父子组件传值时,v-bind:data="data",props接收的到底 ...
- Vue父子组件数据双向绑定,子组件可修改props
第一种,子组件通过监听父组件数据,子组件改变数据之后通知给父组件 原文链接:https://blog.csdn.net/m0_37728716/article/details/81776929 父组件 ...
随机推荐
- OpenCV Laplace 算子
#include "opencv2/imgproc/imgproc.hpp" #include "opencv2/highgui/highgui.hpp" #i ...
- 再举个webstrom 正则应用例子。
要将 "_behavior_chineseobj":{ "场所内网IP地址":"IP_ADDRESS", "源外网IPv4地址&q ...
- Android开发之《RXJava的简单实现》
import android.util.Log; import rx.Observable; import rx.Subscriber; import rx.functions.Action1; pu ...
- Java Enum 枚举的简单使用
一.什么是枚举 值类型的一种特殊形式,它从 System.Enum 继承,并为基础基元类型的值提供备用名称.枚举类型有名称.基础类型和一组字段.基础类型必须是一个内置的有符号(或无符号)整数类型(如 ...
- Maven基本概念和操作
最近在学Java,找来一个开源项目练手,它是用 Spring Boot 搭建的框架,于是去学 Spring Boot,然而 Spring Boot 需要有 Spring 框架和 Maven 的使用经验 ...
- 基于物理的渲染——间接光照
在前面的文章中我们已经给出了基于物理的渲染方程: 并介绍了直接光照的实现.然而在自然界中,一个物体不会单独存在,光源会照射到其他的物体上,反射的光会有一部分反射到物体上.为了模拟这种环境光照的形式,我 ...
- IBM Developer:Java 9 新特性概述
Author: 成富 Date: Dec 28, 2017 Category: IBM-Developer (20) Tags: Java (27) 原文地址:https://www.ibm.com/ ...
- 二十一世纪计算 | John Hopcroft:AI革命
编者按:信息革命的浪潮浩浩汤汤,越来越多的人将注意力转向人工智能,想探索它对人类生产生活所产生的可能影响.人工智能的下一步发展将主要来自深度学习,在这个领域中,更多令人兴奋的话题在等待我们探讨:神经网 ...
- Redis list实现原理 - 双向循环链表
双向链表 双向表示每个节点知道自己的直接前驱和直接后继,每个节点需要三个域 查找方向可以是从左往右也可以是从右往左,但是要实现从右往左还需要终端节点的地址,所以通常会设计成双向的循环链表; 双向的循环 ...
- 7-43 jmu-python-字符串异常处理 (20 分)
输入一行字符串及下标,能取出相应字符.程序能对不合法数据做相应异常处理. 输入格式: 行1:输入一字符串 行2:输入字符下标 输出格式: 下标非数值异常,输出下标要整数 下标越界,输出下标越界 数据正 ...