给属性传递数据

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<title></title>
<style type="text/css"> </style>
</head>
<body>
<div id="app">
<!-- 外部传入属性值 -->
<my-button color="red"></my-button>
</div>
<script>
//全局定义组件
Vue.component('my-button',{
template:'<button v-bind:style="style">this is my button</button>',
props:['color'], //设置组件属性color
computed: {
style(){
return {backgroundColor:this.color}; //内部使用属性color
}
}
}); var app = new Vue({
el: '#app',
data: { } });
</script>
</body>
</html>

还可以定义组件属性的类型,默认值,是否必须,添加属性验证函数

您已经看到,当数据对象、方法或计算属性的值发生更改时,也会更新模板,这对props也适用。当设置组件上的props将其绑定到一个值时,可以使用vbind,然后当该值发生更改时,组件中使用它的任何地方也会更新

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<title></title>
<style type="text/css"> </style>
</head>
<body>
<div id="app"> <!-- 外部传入属性值 -->
<my-button my-alt="1111" color="red" text="1212" v-bind:price="price"></my-button> <p>{{price}}</p>
</div>
<script>
//全局定义组件
Vue.component('my-button',{
template:'<div v-bind:alt="myAlt"><button v-bind:style="style">{{text}} </button> <span>{{price}}</span></div>',
props:{
color:{
type:String,
default :"blue",
required:false,
},
text:[String,Number] ,//如果一个属性是多种类型中的一种,那么您可以传入数组中的所有有效类型
price:{
type:Number,
default:0.00,
required:true,
validator(val){ //验证属性price必须大于等于0
return val>=0
}
},
myAlt:String, //注意vue会帮我们自动转换驼峰命名为"-"方式,在元素上使用的属性应该为:my-alt
},
computed: {
style(){
return {backgroundColor:this.color}; //内部使用属性color
}
},
}); var app = new Vue({
el: '#app',
data: {
price:0,
},
created() {
let that=this;
setInterval(function(){
that.price++;
},1000);
} });
</script>
</body>
</html>

数据通过一个props从父对象传递给子对象,当该数据在父对象中被更新时,传递给子对象的道具也被更新。但是,您不能从子组件修改该props。这就是所谓的单向绑定,它可以防止组件可能无意中改变父组件的状态

所有 props 都在子组件和父组件之间形成一个单向往下流动的数据绑定:当父组件中的属性更新时,数据就会向下流动到子组件,但是反过来,子组件属性更新时,父组件并不会感知到子组件的数据变化。这种机制可以防止子组件意外地修改了父组件的状态,造成应用程序的数据流动变得难于理解。

此外,每次父组件更新时,子组件中所有的 props 都会更新为最新值。也就是说,你不应该试图在子组件内部修改 prop。如果你这么做,Vue 就会在控制台给出警告。

【前端全套视频教程】https://weihaibao.taobao.com/m/QWYr3w57z  点击链接,跟多教程请浏览本店(价格便宜公道,买不了吃亏买不了上当)

vue教程二 vue组件(3)的更多相关文章

  1. vue教程二 vue组件(2)

    每个组件都可以有自己的data.methods.computed和您之前看到的所有内容—就像Vue实例本身一样. 您可能已经注意到了组件和Vue实例之间的一个细微差别:Vue实例上的数据属性是一个对象 ...

  2. vue教程二 vue组件(1)

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <script ...

  3. vue教程3-05 vue组件数据传递、父子组件数据获取,slot,router路由

    vue教程3-05 vue组件数据传递 一.vue默认情况下,子组件也没法访问父组件数据 <!DOCTYPE html> <html lang="en"> ...

  4. vue教程3-03 vue组件,定义全局、局部组件,配合模板,动态组件

    vue教程3-03 vue组件,定义全局.局部组件,配合模板,动态组件 一.定义一个组件 定义一个组件: 1. 全局组件 var Aaa=Vue.extend({ template:'<h3&g ...

  5. vue教程3-04 vue.js vue-devtools 调试工具的下载安装和使用

    vue教程3-04 vue.js vue-devtools vue调试工具的安装和使用 一.vue-devtools 下载与安装 1.需要 fan qiang 2.打开谷歌浏览器设置--->扩展 ...

  6. vue教程2-02 vue防止花括号{{}}闪烁,v-text和v-html、v-cloak

    vue教程2-02 vue防止花括号{{}}闪烁,v-text和v-html.v-cloak 一.v-text和v-html <span>{{msg}}</span>  --& ...

  7. vue教程3-02 vue动画

    vue教程3-02 vue动画 以下代码,已经用包管理器下载好vue,animate <!DOCTYPE html> <html lang="en"> &l ...

  8. vue教程2-04 vue实例简单方法

    vue教程2-04 vue实例简单方法 vue实例简单方法: vm.$el -> 就是元素 vm.$data -> 就是data <!DOCTYPE html> <htm ...

  9. vue教程2-03 vue计算属性的使用 computed

    vue教程2-03 vue计算属性的使用 computed computed:{ b:function(){ //默认调用get return 值 } } ---------------------- ...

随机推荐

  1. 机器学习经典算法之KNN

    一.前言 KNN 的英文叫 K-Nearest Neighbor,应该算是数据挖掘算法中最简单的一种. 先用一个例子体会下. /*请尊重作者劳动成果,转载请标明原文链接:*/ /* https://w ...

  2. vue的懒加载如何实现?

    个人通过查找发现一个比较好用的模块,vue-lazyload 第一步 下载安装这个包    npm install vue-lazyload 第二步 在main.js中引入这个模块 import Vu ...

  3. Python基础(八) 模块的引入与定义

    模块定义 什么是模块:一个py文件就是一个模块 模块分为三类: 内置模块,(标准库):.python解释器自带的,time,os,sys,等等.200多种. 自定义模块:自己写的模块 第三方库(模块) ...

  4. 小范笔记:ASP.NET Core API 基础知识与Axios前端提交数据

    跟同事合作前后端分离项目,自己对 WebApi 的很多知识不够全,虽说不必要学全栈,可是也要了解基础知识,才能合理设计接口.API,方便与前端交接. 晚上回到宿舍后,对 WebApi 的知识查漏补缺, ...

  5. MySQL数据库修改字段的长度

    数据库版本:5.7.22 使用DDL语句:alter table 表名 modify 字段名 字符类型(长度) 例如: alter table db2.admin modify password );

  6. linux 多主机间快速跳转脚本

    #!/usr/bin/env python #coding=utf8 ''' 用于多机器间相互跳转,如有新机器加入,需要更新ip_list文件 ''' from prettytable import ...

  7. 一套简单的web即时通讯——第一版

    前言 我们之前已经实现了 WebSocket+Java 私聊.群聊实例,后面我们模仿layer弹窗,封装了一个自己的web弹窗 自定义web弹窗/层:简易风格的msg与可拖放的dialog,生成博客园 ...

  8. 计算广告之CTR预估-FNN模型解析

    原论文:Deep learning over multi-field categorical data 地址:https://arxiv.org/pdf/1601.02376.pdf 一.问题由来 基 ...

  9. Redis在.net 环境下的使用

    Redis概念 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,和Memcached类似,它支持存储的value类型相对更多,包括st ...

  10. Bzoj 2733: [HNOI2012]永无乡 数组Splay+启发式合并

    2733: [HNOI2012]永无乡 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 3955  Solved: 2112[Submit][Statu ...