Vue.js 组件

vue组件

组件 (Component) 是 Vue.js 最强大的功能之一,
创建组件

<body>		
		<div id="app">
			
			<button-counter></button-counter>
		</div>		
		<script type="text/javascript">			
			//全局定义组件(作用域隔离)
			//可包含dom  js逻辑  样式
			Vue.component("navbar",{
			Vue.component('button-counter', {
	  		data: function () {
    		return {
      		count: 0
   			 }
  			},
 			 template: '<button v-on:click="count++">You clicked me {{ count }} times.</button>'
			})
			new Vue({
				el:"#app"
			})		
		</script>		
	</body>
组件复用
<div id="components-demo">
  <button-counter></button-counter>
  <button-counter></button-counter>
  <button-counter></button-counter>
</div>

注意当点击按钮时,每个组件都会各自独立维护它的 count。因为你每用一次组件,就会有一个它的新实例被创建。

组件的组织

全局注册和局部注册。至此,我们的组件都只是通过 Vue.component 全局注册的:

Vue.component('my-component-name', {
  // ... options ...
})

通过 Prop 向子组件传递数据

Prop 是你可以在组件上注册的一些自定义 attribute。当一个值传递给一个 prop attribute 的时候,它就变成了那个组件实例的一个 property。为了给博文组件传递一个标题,我们可以用一个 props 选项将其包含在该组件可接受的 prop 列表中:

Vue.component('blog-post', {
  props: ['title'],
  template: '<h3>{{ title }}</h3>'
})

监听子组件事件

我们可以通过添加一个 postFontSize 数据 property 来支持这个功能:

<div id="blog-posts-events-demo">
  <div :style="{ fontSize: postFontSize + 'em' }">
    <blog-post
      v-for="post in posts"
      v-bind:key="post.id"
      v-bind:post="post"
    ></blog-post>
  </div>
</div>
Vue.component('blog-post', {
  props: ['post'],
  template: `
    <div class="blog-post">
      <h3>{{ post.title }}</h3>
      <button>
        Enlarge text
      </button>
      <div v-html="post.content"></div>
    </div>
  `
})

解析 DOM 模板时的注意事项

有些 HTML 元素,诸如

    1. 、 和 ,对于哪些元素可以出现在其内部是有严格限制的。而有些元素,诸如
    2. 和 ,只能出现在其它某些特定的元素内部。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值