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 等.同时在这个过程中也会运行一些叫做生命周期钩子的函数 ...
随机推荐
- 关于JQuery获取宽度和高度在chrome和IE下的不同
之前写了一个关于滚动条的东西,可是在写的时候发现JQuery在获取宽度和高度时在不同浏览器中是不一样的,下面发一下代码给给位看官先展示一下: $(function(){ $("#main&q ...
- xssless - 自动化的XSS payload攻击器
XSSLESS 一个用Python编写的自动化XSS 负载(payload)攻击器 用法: 记录请求 并结合Burp proxy 选择你想生成的请求,然后右键选择“保存项目” 使用xssless生成你 ...
- java之真假分页
真分页(要的是什么范围的记录在数据库查的时候就只查这几条记录):select s.* from (select *,row_number() over(order by SLoginId) as ro ...
- qt编译的基于xlib cairo的桌面程序
在*.pro中添加以下代码: INCLUDEPATH += /usr/include/cairo LIBS += -lX11 -lcairo 在ubuntu16下编译通过
- 关于angular-route后获取路由标签的一些问题
要实现angular路由,我们需要用到angular.js和angular-route.js 在接入网络的情况下,很多网站都可以下载到这个文件. 然后呢,将文件引入到你的HTML中,然后是基础格式 h ...
- Eclipse 下的 Maven的安装及配置
http://jingyan.baidu.com/article/295430f136e8e00c7e0050b9.html
- 浅谈MVC Form认证
简单的谈一下MVC的Form认证. 在做MVC项目时,用户登录认证需要选用Form认证时,我们该怎么做呢?下面我们来简单给大家说一下. 首先说一下步骤 1.用户登录时,如果校验用户名密码通过后,需要调 ...
- linux 下用renameTo方法修改java web项目中文件夹名称问题
经测试,在Linux环境中安装tomcat,然后启动其中的项目,在项目中使用java.io.File.renameTo(File dest)方法可行. 之前在本地运行代码可以修改,然后传到Linux服 ...
- AngularJS高级程序设计读书笔记 -- 指令篇 之 内置指令
1. 内置指令(10-12 章) AngularJS 内置超过 50 个内置指令, 包括 数据绑定,表单验证,模板生成,时间处理 和 HTML 操作. 指令暴露了 AngularJS 的核心功能, 如 ...
- jQuery未定义错误原因(jQuery is not define)
使用jQuery时,必须把它写在最前面,这样浏览器才会先加载jQuery,否则会提示缺少对象. 正确 <script type="text/javascript" src=& ...