CSDN|查漏补缺!这份 VUE 学习知识总结请注意查收! | 原力计划( 三 )
【CSDN|查漏补缺!这份 VUE 学习知识总结请注意查收! | 原力计划】
本文插图
(2)全局组件第一个参数为组件的名称 , 我在这里定义了一个 comp4 的组件“ , 第二个参数为一个对象 。 template 模板内容只能有一个根元素(div) 。 Vue.component('comph4', { template: '<div><h4>这是一个h4标题</h4></div>'})以上方法在输入模板内容时在编辑器内无任何智能提示,所以我将 template 模板内容放在外面 。 template 我给他传递一个ID 选择器 cmp4 , 并在外部通过 template 标签定义模板内容 。 <template id="cmp4"> <div> <h4>这是一个h4标题</h4> </div></template><script> Vue.component('comph4', { template: '#cmp4'})</script>(3)私有组件下面这个 copmh4 就只能在 app1 下面调用 , 我还是使用了将模板内容放在外部的方法 。 var vm = new Vue({ el:'#app1', data:{}, methods:{}, components:{ comph3:{ template:'#cmp3' } }})3、组件的调用组件调用就和写 html 标签一样,comp4 组件就可以在全局中调用 , 而 cmp3 只能在 app1 中调用:<body> <comp4><comp4> <div id="app1"> <comp3><comp3> </div> <template id="cmp4"> <div> <h4>这是一个h4标题</h4> </div> </template> <template id="cmp3"> <div> <h3>这是一个h3标题</h3> </div> </template></body>4、组件中的其他知识(1)data 的不同组件和实例一样也可以拥有自己的data数据和 methods 方法 , 和实例中 data不同的是 , 组件中的 data 必须为一个函数 , 且这个函数必须返回一个对象 。 Vue.component('comph4', { template: '#cmp4', data: function{ return{ msg:'msg这是组件中data中的数据' } }, methods:{}})(2)组件的切换eg:在 VUE 实例的 data 中定义一个变量通过同过点击不同的按钮给 data 变量赋不同的值 , 根据不同的值来选择显示哪个组件 。 <div id="app1"> <input type="button" value="http://news.hoteastday.com/a/cmph3" @click="iscom='comph3'"> <input type="button" value="http://news.hoteastday.com/a/cmph4" @click="iscom='comph4'"> <component :is="iscom"></component></div>var vm = new Vue({ el:'#app1', data:{ iscom:''}})(3)父子组件之间的传值原理:父组件在引用子组件的时候通过属性绑定 , 将父组件的数据绑定给子组件 , 绑定方法通过事件绑定 。 注意:必须将绑定的属性在子组件的 props 数组中定义一下 , 且父组件传过来的值是可读的 , 组件自己 data 里的数据是可读可写的 。 通过属性绑定将父组件的 msg 传给子组件 , 并且通过事件绑定 , 将 show 方法传递给子组件 , 子组件在接收父组件的值时 , 在 props 数组中定义 。 子组件传递给父组件通过==$emit==,第一个参数为绑定事件的名称 , 第二个参数为要传递的值 , 如果只是父组件向子组件传递方法 , 则不必传递第二个参数 。 说白了子组件向父组件传值 , 其实就是父组件向子组件传递方法的同时接收子组件反馈过来的数据罢了 。 <div id="app1"> <comph4 :fromParent="msg" @fun="show"></comph4></div>var vm = new Vue({ el:'#app1', data:{ msg:'我是父组件中的msg', fromSon:null }, methods:{ show(data){ //父组件的show方法接收一个参数 this.fromeSon=data; //将从子组件接收过来的data赋值给父组件的fromSon } } compents:{ comph4:{ template:'<div> <h4>我是一个h4---{{fromParent}}</h4> <input type="button" value="http://news.hoteastday.com/a/调用父组件中的方法" @click=”myclick“> </div>' ,props:['fromParent'], data:function{ return { data:{name:'orange',age:18} } }, methods:{ myclick{ this.$emit('fun',this.data) //将子组件中的data传递给父组件 } } } }})版权声明:本文为CSDN博主「新鲜的橘子」的原创文章 , 遵循CC 4.0 BY-SA版权协议 , 转载请附上原文出处链接及本声明 。 你点的每个“在看” , 我都认真当成了喜欢
推荐阅读
- CSDN|由 Apache 说开,中国开源项目已经走向世界!
- CSDN|软件对于英特尔意味着什么?
- CSDN|中国首家苹果零售店重开业,苹果CEO库克发文揭幕;“携号转网”服务用户破千万;GitHub 完成北极源代码存档|极客头条
- 智能机器人|快商通智能客服云平台荣获CSDN“AI优秀案例实践奖”
- CSDN|万亿美元软件浪潮来临,开发者是核心!
- 行业互联网|快商通智能客服云平台荣获CSDN“AI优秀案例实践奖”
- CSDN|OpenInfra Days China 2020 官网正式上线,含免费注册通道!
- CSDN|实战 | 对抗外部威胁防护和勒索病毒,大厂怎么做?
- CSDN|它估值 25 亿!被马云领投,是华为“老战友”,网友:也许股价能超茅台!
- CSDN|刺激!一行代码即可导出所有浏览记录
