Vue.js学习笔记--4. 组件的基本使用
整理自官网教程 -- https://cn.vuejs.org/
1. 所有Vue组件同时也都是Vue实例,分为全局组件和局部组件,注册方式如下。
<div id="app">
<my-component></my-component>
<child-component></child-component>
</div>
<div id="example">
<my-component></my-component>
<!--在#app内局部注册的组件在此无法被渲染 -->
<child-component></child-component>
</div>
<script src="https://cdn.jsdelivr.net/npm/vue"></script>
<script>
Vue.component('my-component', { //全局组件,建议使用短横线分隔式命名组件
template: '<div>A custom component!</div>'
})
var Child = {
template: '<div>A child component!</div>'
}
var app = new Vue({
el: '#app',
components: { //局部组件,仅可在父作用域#app中使用
'child-component':Child
}
})
var example = new Vue({
el:'#example'
})
</script>
注意:
a. 如<ul>、<table>和<li>、<tr>等父子元素有限制的元素,不能直接使用组件模板,可由is属性来指定,如<tr is="my-row"></tr>。若使用来自以下来源之一的字符串模板(允许嵌入表达式的字符串字面量),则没有这些限制:
1) <script type="text/x-template">
2) JavaScript 内联模板字符串:
Vue.component('component1',{
template: '<tr><td>child component</td></tr>'
});
Vue.component('component2',{
template: '<table><component1></component1></table>'
});
3) .vue 组件
b. 组件实例中 data 必须是一个函数,否则会给每个组件实例返回对同一个对象的引用
2. 父子组件组合使用
a. 父组件传递数据给子组件
1) 在子组件中由props声明预期数据。
2) 属于单向数据流,子组件不能直接修改prop。
3) 若要设置prop类型验证,则不能用字符串数组,应定义:
props:{
propA: Number,
propB: [String, Number]
}
4) 若要添加非prop属性,则在使用子组件时,在标签中设置该属性="true"。
b. 子组件触发父组件事件
1) 利用 $on(eventName) 监听事件和 $emit(eventName,optionalPayload) 触发事件。
2) 结合定义的空实例,也可允许非父子组件的通信。
c. 父子组件数据组合--利用插槽slot
1) 子组件中设置<slot>,父组件可分发内容到默认slot或指定slot="slotName"。
2) 父组件中设置slot-scope="props",可获取子组件slot标签的属性。
3) 需注意父组件模板的内容在父组件作用域内编译;子组件模板的内容在子组件作用域内编译。
3. 其他
a. 通过 v-bind:is = "componentObject",可动态切换组件。若要缓存切出去的组件,则为其添加父元素<keep-alive>。
b. 在子组件中设置 ref="xx" ,可由 child = vm.$refs.xx 操作子组件。 -- 只是一种紧急手段。
Vue.js学习笔记--4. 组件的基本使用的更多相关文章
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- vue.js 学习笔记3——TypeScript
目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...
- Vue.js学习笔记:在元素 和 template 中使用 v-if 指令
f 指令 语法比较简单,直接上代码: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" " ...
- Vue.js 学习笔记之四:Vue 组件基础
到目前为止,这个系列的笔记所展示的都是一些极为简单的单页面 Web 应用程序,并且页面上通常只有几个简单的交互元素.但在实际生产环境中,Web 应用程序的用户界面往往是由多个复杂的页面共同组成的.这时 ...
- Vue.js 学习笔记之七:使用现有组件
5.3 使用现有组件 在之前的五个实验中,我们所演示的基本都是如何构建自定义组件的方法,但在具体开发实践中,并非项目中所有的组件都是需要程序员们自己动手来创建的.毕竟在程序设计领域,"不要重 ...
- Vue.js 学习笔记之五:编译 vue 组件
正如上一篇笔记中所说,直接使用 ES6 标准提供的模块规范来编写 Vue 组件在很多情况下可能并不是最佳实践.主要原因有两个,首先是市面上还有许多并没有对 ES6 标准提供完全支持的 Web 浏览器, ...
- Vue.js 学习笔记 第7章 组件详解
本篇目录: 7.1 组件与复用 7.2 使用props传递数据 7.3 组件通讯 7.4 使用slot分发内容 7.5 组件高级用法 7.6 其他 7.7 实战:两个常用组件的开发 组件(Compon ...
- Vue.js 学习笔记之六:构建更复杂的组件
在掌握了如何构建与编译 Vue 组件的基础知识之后,接下来就可以试着来构建一些更具有实际用处的复杂组件了.为了赋予组件更具实用性的后面,首先要做的就是让这些组件具备监听用户自定义事件的能力,并且允许用 ...
- Vue.js——学习笔记(一)
Vue-自学笔记 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层,不仅 ...
随机推荐
- 嵌入式开发之davinci--- 8148/8168/8127 中的添加算饭scd 场景检测 文档简介
Osd Scd (1) Introduction over view a) scene change detection block diagram a) gr ...
- autofac如何注册静态方法里的接口对象
标题可能是不准确的,因为我不知道如何描述.不知道的原因,是对依赖注入一知半解. Autofac可以自动注册对象实例到接口,人所尽知.而在asp.net mvc中,这个实例化的工作,通常在每个控制器的构 ...
- 内存转储文件 Memory.dmp
https://baike.sogou.com/v63435711.htm?fromTitle=内存转存文件 内存转储是用于系统崩溃时,将内存中的数据转储保存在转储文件中,供给有关人员进行排错分析用途 ...
- 什么是PMU(PMIC)【转】
本文转载自:http://blog.csdn.net/zhenwenxian/article/details/7614537 什么是PMU(PMIC) PMU(power management uni ...
- 解决多次异步请求紊乱问题 - JavaScript
加入目前的需求这样的: 左边的菜单链接,点击后通过异步请求返回其HTML代码,然后innerHTML到右面的DIV中,加入切换菜单的速度非常快,最终会导致请求紊乱. 可以加入消息管理机制, ...
- DGA域名可以是色情网站域名
恶意域名指传播蠕虫.病毒和特洛伊木马或是进行诈骗.色情内容传播等不法行为的网站域名. 恶意域名指传播蠕虫.病毒和特洛伊木马或是进行诈骗.色情内容传播等不法行为的网站域名.本文面临能够的挑战,就是恶意网 ...
- Java 内存管理、JVM 工作原理与 Java 运行时系统
Java 虚拟机规范中说明:所有的对象实例(all class instances)以及数组都要在堆上分配: the heap is the runtime data area from which ...
- pybot执行多条用例时,某一个用例执行失败,停止所有用例的执行
问题: pybot执行多条用例时,某一个用例执行失败,停止所有用例的执行 解决办法: pybot -exitonfailure E:\robot\呼送项目\测试用例\基本流程\主流程.txt 参考文章 ...
- webpack -v显示的版本与package.json的devDependencies节点显示的webpack版本不一致的问题
最近在学习webpack,遇到个奇葩的问题.就是安装完成webpack后,查看安装的webpack版本与package.json中显示的版本不一致, webpack是局部安装的,非全局安装, 命令1: ...
- Sencha Cmd使用
通过Sencha Cmd辅助开发基于ExtJS4 MVC的项目 http://www.ineeke.com/archives/1465/ ExtJS4.2:Sencha Cmd 介绍:http://w ...