vue怎么样创建组件呢??
我知道vue中核心就是组件,但是组件是什么呢?组件有什么用呢?怎么用组件呢?怎么样创建自己的组件呢?
前面两个问题就不说了,这里来说说,后面的两个问题:
1)创建自己的组件
通过vue.extend("template");通过vue构造器去拓展一个模板,然后注册,最后使用。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>进一步了解component的话法糖</title>
<script src="../vue.js"></script>
</head>
<body>
<div>这是一个全局注册的</div>
<div id="app">
<parent></parent>
</div> </body>
</html>
<script>
var child= Vue.extend({template:'<p>this is child component</p>'});
//Vue.component("组件名",{});在注册之前会自动创建(调用vue.extend()方法 )
//这是一个全局注册(兼创建与注册)
Vue.component("parent",{//有时候我们可以省略,extend.
template:'<div>this is parent component ------ {{text}} <child-component></child-component> </div>',//局部使用
components:{
"child-component":child,//局部注册
},
//data:function(){}
data(){
return {text:'哈哈哈,我是组件内部的text'}
},
}); var vm= new Vue({
el:'#app',
data:{},
});
进阶一下:(组件内部在套组件,(components下面的components))
通过下面的例子,我就想说明一点,组件是vue构造器的拓展,所以组件可能拥有构造器的几乎所有属性(在写这篇博客前,我们没有听到这个说法,所以可能是错的,不要信)
<body>
<div>这是一个局部注册</div>
<div id="app1">
<div><button v-on:click=get>这里触发get方法</button></div>
<parent-components></parent-components> </div>
</body> <script>
// var child=Vue.extend({template:"<span> ------child element------</span>"});
var vp=new Vue({
el:'#app1',
data:{},
methods:{
get:function(){alert("这是构造器中get(全局)");}
},
components:{
"parent-components":{
template:"<div>---------<span> parent components</span><p><button v-on:click=get>点击触发parent的get</button></p> <div><child-component></child-component></div>--------</div>",
components:{
//局部注册再一次局部注册
"child-component":{
template:"<span> ------child <button v-on:click=get>点击触发child中的get方法</button>element------</span>",
methods:{
get:function(){
alert("这是局部注册child-component组件中get");
}
}
}
}, methods:{
get:function(){
alert("这是蝉联注册parent-components里面的方法");
}
},
},
}, }); </script>
你知道吗?一个components中可以定义多个组件:
将html,写入components是不是觉得很low呢?当template的内容太多了,是不是不堪入目呢?那我们来使用一下vue组件的语法糖吧(不知道为啥叫这个名)
值得提醒你的事:组件中的data属性要定义成一个函数,返回一个对象,
<script type="text/x-template" id="myComponent">
<div>
<span>{{msg}}</span>
</div>
</script> <template id='myCom'>
<span>{{msg}}</span>
</template> <div id="app">
<parent-component-script></parent-component-script> <parent-component-tem></parent-component-tem>
</div> var vm=new Vue({
el:"#app",
data:{},
components:{
"parent-component-script":{
template:'#myComponent',
data(){return{msg:'这里是script'};},
}, "parent-component-tem":{
template:'#myCom',
data(){return{msg:'这里是template'} }
}, },
});
你也可以更狠一点:的创建方式
值得注意的是:组件中的props中属性值,定义时是驼峰,使用时就要变为中划线
<div id="app">
<son :son-counter="counter"></son>
<p>parent:<input type="text" v-model="counter"/></p>
</div> const son={
template:`<div>son:<input v-model="sonCounter" /></div>`,
props:{sonCounter:Number},
}; var app=new Vue({
el:'#app',
data:{
counter:,
},
components:{
son
} });
最后一个提醒:组件的创建要在,vue实例化之前。
vue怎么样创建组件呢??的更多相关文章
- Vue之创建组件之配置路由!
Vue之创建组件之配置路由!== 第一步: 当然就是在我们的试图文件夹[views]新建一个文件夹比如home 在home文件夹下面新建一个文件index.vue 第二步:在router目录下做如下事 ...
- vue.js 创建组件 子父通信 父子通信 非父子通信
1.创建组件 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- Vue动态创建组件方法
组件写好之后有的时候需要动态创建组件.例如: 编辑文章页面,正文是一个富文本编辑器,富文本编辑器是一个第三方的组件,点击添加章节的时候需要动态的创建一个富文本编辑器这个时候怎么处理呢. 富文本编辑器也 ...
- vue 动态创建组件(运行时创建组件)
function mountCmp (cmp, props, parent) { if (cmp.default) { cmp = cmp.default } cmp = Vue.extend(cmp ...
- vue.js 中组件的使用
Vue中组件的使用 方式一 1.使用Vue.extend创建组件 var com1 = Vue.extend({ template: '<h3>这是使用 Vue.extend 创建的组件& ...
- Vue—非父子组件间的传值(Bus/发布订阅模式/观察者模式/总线)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Vue 创建组件的方式
Vue 创建组件的方式 2018年08月07日 11:10:56 虔诚带着决然 阅读数:1015 版权声明:本文为博主原创文章,未经博主允许不得用做其他商业活动. https://blog.csd ...
- vue创建组件
vue创建组件是很容易的: js: Vue.component("component-item",{ //component-item就是我们在HTML页面上引用的组件,它会在 ...
- Vue学习之路第二十篇:Vue生命周期函数-组件创建期间的4个钩子函数
1.每个 Vue 实例在被创建时都要经过一系列的初始化过程——例如,需要设置数据监听.编译模板.将实例挂载到 DOM 并在数据变化时更新 DOM 等.同时在这个过程中也会运行一些叫做生命周期钩子的函数 ...
随机推荐
- Disruptor——一种可替代有界队列完成并发线程间数据交换的高性能解决方案
本文翻译自LMAX关于Disruptor的论文,同时加上一些自己的理解和标注.Disruptor是一个高效的线程间交换数据的基础组件,它使用栅栏(barrier)+序号(Sequencing)机制协调 ...
- BOM API
原文链接http://www.jb51.net/article/55851.htm 我们都知道, javascript 有三部分构成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具 ...
- 行内元素和块级元素的具体区别是什么?行内元素的padding和margin可设置吗?
块级元素(block)特性: 总是独占一行,表现为另起一行开始,而且其后的元素也必须另起一行显示; 宽度(width).高度(height).内边距(padding)和外边距(margin)都可控制; ...
- 第一次接触Axure
现在已经是凌晨4:21了,我的第一份Axure.RP文件终于接近尾声,我带着些许疲倦些许兴奋的状态写下这篇博客,记录我和Axure的初遇. 三天前,我加入了湖南大学金山俱乐部,参加了第一次 ...
- linux下查找某个文件或目录
以查找samba为例:find / -name samba 查找之后得到的结果集如下:/var/lib/samba/var/spool/samba/var/log/samba/usr/lib64/sa ...
- C++ 获取文件夹下的所有文件名
获取文件夹下所有的文件名是常用的功能,今天再一次有这样的需求,所有就在网上查找了很多,并记下以供后用. 原文:http://blog.csdn.NET/cxf7394373/article/detai ...
- 【caffe】Error parsing text-format NetParameter: ****:**:Expected string.
错误描述: prototxt中第****行,第**列缺少一个整型数或者标识符. 解决方法: 检查对应的prototxt文件,第****行,第**列是否遗漏相关信息. 我的文件是在代码新旧版本没对应好~ ...
- mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)
下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...
- NewsDaoImpl
package com.pb.news.dao.impl; import java.sql.CallableStatement;import java.sql.Connection;import ja ...
- MapReduce执行流程及程序编写
MapReduce 一种分布式计算模型,解决海量数据的计算问题,MapReduce将计算过程抽象成两个函数 Map(映射):对一些独立元素(拆分后的小块)组成的列表的每一个元素进行指定的操作,可以高度 ...