给属性传递数据

<!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. 10月17日 JS开始日~

    1.变量提升 变量提升是浏览器的一个功能,在运行js代码之前,浏览器会给js一个全局作用域,叫window, window分为两个模块,一个叫做内存模块,一个叫做运行模块,内存模块找到当前作用域下的 ...

  2. python小方法 随笔记

    1. 元组和列表的接收 s1,s2 = [,] print(s1,s2) # 执行结果: 1 2 s3,s4 = (,) print(s3,s4)# 执行结果: 3 4 2. 变量值的交换 a = b ...

  3. php设计模式-责任链模式

    责任链模式更像是一种简化多种场景下调用处理的一种设计模式,特别适合if-else分支判断很多的场景.比如是根据不同会员等级给予不同的优惠力度. 它的定义:对象的调用是由下家的应用连接起来的处理链.一直 ...

  4. Jmh测试JDK,CGLIB,JAVASSIST动态代理方式的性能

    前言 JDK,CGLIB,JAVASSIST是常用的动态代理方式. JDK动态代理仅能对具有接口的类进行代理. CGLIB动态代理方式的目标类可以没有接口. Javassist是一个开源的分析.编辑和 ...

  5. BZOJ 1067:[SCOI2007]降雨量(RMQ+思维)

    http://www.lydsy.com/JudgeOnline/problem.php?id=1067 题意:…… 思路:首先我们开一个数组记录年份,一个记录降雨量,因为年份是按升序排列的,所以我们 ...

  6. tensorflow学习笔记(1)-环境配置

    配置环境anaconda3+windows10+pycharm+python==3.5.2+tensorflow==1.1.4+cuda10.0+cudnn7 https://www.anaconda ...

  7. Windows使用Python统一设置解析器路径

    碰到的问题: .py文件放在cgi-bin文件夹下面,这个.py文件都要设置"#!python.exe路径"来告诉CGI如何找解析器解析这个.py的文件,我是想知道这个路径可否统一 ...

  8. java LineNumberReader的使用

    前段时间需要读报表打印,需求是可以从第N行读到第N行,发现百度出来的LineNumberReader方法都不怎么理想 然后就找到一篇和众百度里脱颖而出的好文章,所以分享之:   从类 的命名来看,貌似 ...

  9. SpringCloud解析之Eureka

    本文基于Spring Cloud Edgware.SR6版本,从功能和架构上解析Eureka,让大家对Eureka有一个较为清晰的认识(本文默认大家对分布式微服务有一个初步的概念和理解,本文不涉及或少 ...

  10. Java设计模式学习笔记(三) 工厂方法模式

    前言 本篇是设计模式学习笔记的其中一篇文章,如对其他模式有兴趣,可从该地址查找设计模式学习笔记汇总地址 1. 简介 上一篇博客介绍了简单工厂模式,简单工厂模式存在一个很严重的问题: 就是当系统需要引入 ...