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 父组件 ...
随机推荐
- SAGE|DNA微阵列|RNA-seq|lncRNA|scripture|tophat|cufflinks|NONCODE|MA|LOWESS|qualitile归一化|permutation test|SAM|FDR|The Bonferroni|Tukey's|BH|FWER|Holm's step-down|q-value|
生物信息学-基因表达分析 为了丰富中心法则,研究人员使用不断更新的技术研究lncRNA的方方面面,其中技术主要是生物学上的微阵列芯片技术和表达数据分析方法,方方面面是指lncRNA的位置特征. Bac ...
- RPC 框架性能大比拼
Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成. Motan 是新浪微博开源的一个Java ...
- haproxy笔记之六:负载均衡MySQL服务的配置示例
#--------------------------------------------------------------------- # Global settings #---------- ...
- webdriver访问各个浏览器驱动下载及安装
这里首先需要查看一下自己安装的selenium版本 查看步骤: windows系统打开cmd命令行输入:pip show selenium查看结果如下: 进入到selenium官网查看版本信息 sel ...
- 【转载】Scrapy安装及demo测试笔记
Scrapy安装及demo测试笔记 原创 2016年09月01日 16:34:00 标签: scrapy / python Scrapy安装及demo测试笔记 一.环境搭建 1. 安装scrapy ...
- The Monster(Codeforce-C-思维题)
C. The Monster time limit per test 1 second memory limit per test 256 megabytes As Will is stuck i ...
- Python---5Python内置的有序集合-list和tuple
list Python内置的一种数据类型是列表:list,[ ].可以修改的集合. list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: ...
- 在 Ubuntu 14.04 安装 PyCharm 5 & Oracle JDK
由于授权问题,在较新的Linux发行版本中都不再包含Oracle Java,取而代之的是OpenJDK.Ubuntu也是如此. OpenJDK能满足大部分的应用程序运行条件,但PyCharm无法在Op ...
- e代驾推出新产品“e代喝”,能否实现前者的社交梦?
近日,关于e代驾推出e代喝的新闻不断出现在各大媒体的新闻报道之中,看似好像是替人排扰解难的征服酒局的又一利器.但事实真的如此吗?首先要弄清楚的,是目前e代驾在行业中的处境.作为代驾行业的先驱者,e代驾 ...
- 一文看懂Java序列化
一文看懂Java序列化 简介 Java实现 Serializable 最基本情况 类的成员为引用 同一对象多次序列化 子父类引用序列化 可自定义的可序列化 Externalizable:强制自定义序列 ...