vue---day02
1. 全局组件的注册 - 创建根实例的时候,data可以是object,也可以是函数
- 创建组件的时候,data必须是函数 1.1 创建
Vue.component('global-component',{
template:`
<div>
<h1>{{ hello }}</h1>
</div>
`,
data(){
return {
hello:'hello'
}
},
})
1.2 使用
let vm = new Vue({
el:'#app',
template:`
<global-component></global-component>
`,
})
1.3 使用
<div id="app">
<global-component></global-component>
</div> let vm = new Vue({
el:'#app',
})
2. 局部组件
- data必须是函数(单体函数)
- 没有el属性
2.1 创建局部组件 实质就是创建JavaScript object
let Header = {
template:`
<div>{{ hello }}</div>
`,
data(){
return {
'hello':'hello',
}
},
};
2.2 注册
2.2.1
//单独使用
new Vue({
el:'#app',
template:`<app-header></app-header>`,
components:{
'app-header':Header,
},
});
2.2.2
//嵌套使用
let App = {
template:`
<div>111</div>
<app-header></app-header>
`,
components:{
'app-header':Header,
},
};
new Vue({
el:"#app",
template:`<App></App>`,
components:{
App,
},
});
3. 组件之间通信
- 父子组件之间的数据 传递拥props 接受父组件的一个事件
- 子父组件之间的数据 传递拥$emit 触发父组件的一个事件
3.1 父子之间通信
<div id="app>
...
</div> let Header = {
template:`
<div>{{ xxx }}</div>
`,
props:['xxx'],
}; let App = {
template:`
<app-header :xxx='parent-data'></app-header>
`, components:{
'app-header':Header,
},
data(){
return {
'parent-data':'父组件的数据',
}
}
}; new Vue({
el:'#app',
template: `<App></App>`,
components:{
App,
}
})
3.2 子父组件的通信
<div id="app">
</div>
let Header = {
template: `
<div>
<button @click="xxx">给父组件传递数据</button>
</div>
`,
data() {
return {
'childData': '子组件的数据'
}
},
methods: {
xxx() {
this.$emit('ooo',this.childData);
}
}
};
let App = {
template: `
<div>
<h1>父组件接受的数据---{{ childData }}</h1>
<app-header @ooo="get_data"></app-header>
</div>
`,
data() {
return {
'childData': '1',
}
},
components: {
'app-header': Header,
},
methods: {
get_data(value) {
console.log(111,value)
this.childData = value;
}
},
};
new Vue({
el: '#app',
template: `<App></App>`,
components: {
App,
},
})
4. 混入
- 定义一个mixs object 然后写方法methods(){}
- 使用:mixins = [minx]
- 解决代码重用
<div id="app">
<dog></dog>
<cat></cat>
</div> <script> let mixs = {
methods:{
show(value){
alert(value+'来了');
},
hide(value){
alert(value+'走了');
},
}
}; let Cat = {
template: `
<div>
<button @click="show('小猫')">小猫来了</button>
<button @click="hide('小猫')">小猫走了</button>
</div>
`,
data() { },
mixins:[mixs]
}; let Dog = {
template: `
<div>
<button @mouseenter="show('小狗')">Come</button>
<button @mouseleave="hide('小狗')">Go</button>
</div>
`,
mixins: [mixs],
}; new Vue({
el: '#app',
components: {
'dog':Dog,
'cat':Cat,
},
}) </script>
5. 插槽
<div id="app">
<global-components>首页</global-components>
<global-components>轻课</global-components>
<global-components>学位课</global-components>
</div> Vue.components('global-components',{
template:`
<div><slot></slot></div>
`
}) new Vue({
el:'#app',
})
6. 具名插槽
<div id="app">
<global-components>
<div>
<slot name="header>这是头部</slot>
<slot name="footer>这是尾部</slot>
</div>
</global-components> </div> Vue.components('global-components',{
template:`
<div>
<slot name="footer"></slot>
<slot name="header"></slot>
</div>
`
}) new Vue({
el:'#app',
})
vue---day02的更多相关文章
- vue学习-day02(自定义指令,生命周期)
目录: 1.案例:品牌管理 2.Vue-devtools的两种安装方式 3.过滤器,自定义全局或私有过滤器 4.鼠标按键事件的修饰符 5.自定义全局指令:让文本框获取焦点 ...
- Vue 基础 day02
Vue Devtools 安装 https://chrome.google.com/webstore/search/vue%20devtools?hl=zh-CN 需要翻墙 过滤器 概念: Vue.j ...
- vue学习day02
vue 指令 1. 内容渲染指令 v-text 指令的缺点:会覆盖元素内部原有的内容! {{ }} 插值表达式:在实际开发中用的最多,只是内容的占位符,不会覆盖原有的内容! v-html 指令的作用: ...
- vue大型电商项目尚品汇(前台篇)day02
现在正式回归,开始好好做项目了,正好这一个项目也开始慢慢的开始起色了,前面的准备工作都做的差不多了. 而且我现在也开始慢慢了解到了一些项目才开始需要的一些什么东西了,vuex.router这些都是必备 ...
- vue大型电商项目尚品汇(后台篇)day02
这几天更新有点小慢,逐渐开始回归状态了.尽快把这个后台做完,要开始vue3了 3.添加修改品牌 用到组件 Dialog 对话框,其中visible.sync这个配置是修改他的显示隐藏的,label-w ...
- vue_shop(基于vue电商管理后台网站)
vue_shop 目录 vue_shop day01 实现登录功能 项目预开发处理 Login.vue完整代码: 处理步骤: 添加element-ui的表单组件 添加第三方字体: 添加表单验证 导入a ...
- vue再学习
day01 Vue 是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架 vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合 使用Vu ...
- Vue.js 和 MVVM 小细节
MVVM 是Model-View-ViewModel 的缩写,它是一种基于前端开发的架构模式,其核心是提供对View 和 ViewModel 的双向数据绑定,这使得ViewModel 的状态改变可以自 ...
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
- wepack+sass+vue 入门教程(二)
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
随机推荐
- python字符串反转 高阶函数 @property与sorted(八)
(1)字符串反转 1倒序输出 s = 'abcde' print(s[::-1]) #输出: 'edcba' 2 列表reverse()操作 s = 'abcde' lt = list(s) lt.r ...
- Flask入门request session cookie(二)
1 HTTP方法分类 1 GET 浏览器告知服务器:只获取页面上的信息并发给我.这是最常用的方法. 2 HEAD 浏览器告诉服务器:欲获取信息,但是只关心消息头 .应用应像处理 GET 请求一样来处理 ...
- SVN:验证位置时发生错误解决方案
1. 2. 3.preferencens > svn >svn接口-选择SVNKit(Pure Java)设置后,再引用svn路径后,直接弹出输入用户名和密码就对了. 4.
- 三、python webservice
#!/usr/bin/python # -*- coding: utf-8 -*- import logging import suds url="http://172.17.2.199:8 ...
- One Order行项目里Item Category是怎么计算出来的
One Order的行项目里有个字段叫Item Category,我们在行项目里加入一个product后,就会自动带出Item Category来.这个值是怎么计算出来的? 检查CRMD_ORDERA ...
- LA 3353 最优巴士线路设计
给出一个 n 个点的有向图,找若干个圈,是的每个结点恰好属于一个圈.要求总长度尽量小. 三倍经验题 Uva 12264,HDU 1853 这题有两种解法,一是匹配: 每个点只在一个圈中,则他有唯一的前 ...
- POJ Air Raid 【DAG的最小不相交路径覆盖】
传送门:http://poj.org/problem?id=1422 Air Raid Time Limit: 1000MS Memory Limit: 10000K Total Submissi ...
- GPU CUDA编程中threadIdx, blockIdx, blockDim, gridDim之间的区别与联系
前期写代码的时候都会困惑这个实际的threadIdx(tid,实际的线程id)到底是多少,自己写出来的对不对,今天经过自己一些小例子的推敲,以及找到官网的相关介绍,总算自己弄清楚了. 在启动kerne ...
- HDU 1110 Equipment Box (判断一个大矩形里面能不能放小矩形)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1110 Equipment Box Time Limit: 2000/1000 MS (Java/Oth ...
- 18年selenium3+python3+unittest自动化测试教程(下)
第六章 自动化测试进阶实战篇幅 1.自动化测试实战进阶之网页单选性别资料实战 简介:讲解使用selenium修改input输入框和单选框 2.自动化测试之页面常见弹窗处理 简介:讲解使用seleniu ...