局组件和局部组件
1.先定义组件 Vue.component('组件名', { 组件模板对象 })
注意: 组件名不要使用原生的标签名, 若组件名定义时用的是驼峰命名法, 则调用时用中划线分割后小写
例如: 组件-->mtText 使用时--> <my-text></my-text>
2.配置组件的模板 注意: 组件的模板内容有且只有一个根元素
3.在视图层里调用 ,用双标签
4.组件是一个独立的作用域, 也可以看成一个特殊的vue实例, 可以有data, methods,computed等等
注意: 组件的data是函数, 函数中需要返回一个对象作为组件的data
全局组件案例
<body><div id="app"> <my-component></my-component></div><script src="lib/vue-2.4.0.js"></script><script>//全局组件 Vue.component('myComponent',{ //1.组件的内容/模板 template: '<div><div>头部组件</div><h1 @click="fn">呵呵{{msg}}</h1></div>', data(){ return { msg:'hello,组件' } }, methods:{ fn(){ console.log(this.msg); } } }) let vm = new Vue({ el:"#app", data:{ }, methods:{ }, })</script></body>
局部组件案例
<body><div id="app"> <my-component></my-component> <my-test></my-test></div><template id="box1"> <h1>haha</h1></template><template id="box2"> <div> <ul> <li v-for="item in arr"> {{ item }} </li> </ul> </div></template><script src="lib/vue-2.4.0.js"></script><script>let vm = new Vue({ el:"#app", data:{ }, methods:{ }, //局部子组件 components:{ // 组件名: {配置项} "myComponent":{ template:'#box1', data(){ return { msg:"哈哈" } } }, "myTest":{ template:"#box2", data(){ return { arr:[1,2,3,4] } } } } })</script></body>
组件切换:法一
<body><div id="app"> <a href="" @click.prevent=" rel="external nofollow" rel="external nofollow" flag=true">登录</a> <a href="" @click.prevent=" rel="external nofollow" rel="external nofollow" flag=false">注册</a> <login v-if="flag"></login> <register v-else="flag"></register></div><script src="lib/vue-2.4.0.js"></script><script> Vue.component("login",{ template:"<h1>登录组件</h1>" }) Vue.component("register",{ template:"<h1>注册组件</h1>" }) let vm = new Vue({ el:"#app", data:{ flag: false }, methods:{ }, })</script></body>
新闻热点
疑难解答
图片精选