组件化实现简单的toDoList

73 篇文章 0 订阅
9 篇文章 0 订阅

组件化 将一个页面根据功能分解成多块,每一块定义成一个组件,页面分别引入这些组件。

            如此一来 修改维护页面功能的时候 直接定位到相应组件文件。

 每一个组件其实就是一个Vue实例  组件化其实就是实例化 ,页面由多个Vue实例组成

全局组件   
        Vue.component Vue提供的 创建全局组件

        v-bind 向子组件传入绑定值

       遍历list的时候  将每一项的值赋值给item  把item值通过v-bind绑定到变量 content上 传递给to-do-list组件

<!DOCTYPE html>
<html>
	<head>
		<title>toDoList</title>
		<meta charset="UTF-8" />

		<script src="./vue.js"></script>
	</head>

	<body>
		<div id="app">
			<input type='text' v-model="inputValue"/>
			<button @click="handleBtnClick">submit</button>
			<ul>
				<!-- <li v-for="item in list">{{item}}</li> 
                                    之前的思路 循环列表项 li标签实现  
                                    目前 可以将li封装成模板  抽取成组件

                                    to-do-list组件名称 对应下方的创建组件起的名称ToDoList
                                    驼峰命名 拆分时侯 根据大小写 -分割

                                    to-do-list组件 相对于外层容器来说是子组件 通过v-bind向子组件传入 绑定值   
				-->
				<to-do-list v-bind:content="item" 
							v-for="item in list">
				</to-do-list>
			</ul>
		</div>


		<script>
                        <!-- Vue.component Vue提供的 创建全局组件  -->
			Vue.component('ToDoList',{
				props:['content'],//props定义从父组件接收的参数
				template:"<li>{{content}}</li>"   //创建模板  模板中使用插值表达式渲染变量
			}) ;

			var app = new Vue({
				el: "#app" ,
				data: {
					list:[] ,
					inputValue:''
				},
				methods:{
					handleBtnClick:function() {
						this.list.unshift(this.inputValue) ;
						this.inputValue = '' ;
					}
				}
			})
		</script>
	</body>
</html>

局部组件

       var ToDoItem = {
                props:['content'] ,
                template:"<li>{{content}}</li>"
        }需要在实例中  通过conpoments中注册

<!DOCTYPE html>
<html>
	<head>
		<title>toDoItem</title>
		<meta charset="UTF-8" />

		<script src="./vue.js"></script>
	</head>

	<body>
		<div id="app">
			<input type="text" v-model="inputValue"/>
			<button @click="handleBtnClick">submit</button>
			<ul>
				<to-do-item v-bind:content="item" 
							v-for="item in list">
					
				</to-do-item>
			</ul>
		</div>

		<script>
                        <!-- 定义局部组件  -->
			var ToDoItem = {
				props:['content'] ,
				template:"<li>{{content}}</li>"
			} 

			var app = new Vue({
				el:'#app' ,
                                // 在实例中定义组件
				components:{
					ToDoItem:ToDoItem 
				},
				data:{
					list:[] ,
					inputValue:''
				},
				methods:{
					handleBtnClick:function() {
						this.list.unshift(this.inputValue) ;
						this.inputValue = '' ;
					}
				}
			}) 
		</script>
	</body>
</html>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值