`

vue自定义组件并双向绑定属性

阅读更多
  做了两个子组件,原理基本一样,一个是使用原生的select元素,一个是使用element-ui的el-select组件。并实现了子组件的value属性值到父组件的双向绑定,以及一些属性值的单向绑定。
<!DOCTYPE html>
<!-- 
自定义组件学习,wallimn,20190308
 -->
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>自定义组件学习</title>
	<!-- 引入组件样式 -->
	<link rel="stylesheet" href="../res/lib/element-ui.v2.4.9/theme-chalk/index.css">
</head>
<body class="main">

	<div id="app">
		<div>自定义组件示例(element-ui组件封装)1:<agent-select1 :options="agents" v-model="selectAgent1" placeholder="请选择代理商"></agent-select1>选择代理商:{{selectAgent1}}</div>
		<div>自定义组件示例(原生组件封装)2:<agent-select2 :options="agents" v-model="selectAgent2" placeholder="请选择代理商"></agent-select2>选择代理商:{{selectAgent2}}</div>
	</div>
 
 
 
 
    <script type="text/javascript" src="../res/lib/vue.js"></script>
	
	<script src="../res/lib/element-ui.v2.4.9/index.js"></script>

	<!--agent-select1===定义开始===-->
	<!--组件模板-->
	<script type="text/x-template" id="t-agent-select1">
		<el-select :value="localValue" @input="updateVal($event)" :placeholder="placeholder" clearable>
			<el-option
				v-for="v in options"
				:key="v.value"
				:label="v.label"
				:value="v.value">
			</el-option>
	</el-select>
	</script>
	<!--组件定义-->
	<script type="text/javascript">
		Vue.component("agent-select1",{
			template:"#t-agent-select1",
			props:["value","options","placeholder"],//通过props实现数据到子组件的传递
			data: function(){
				return {
					localValue:""
				};
			},
			methods :{
				updateVal: function(val){
					this.$emit("input",val);//通过事件实现组件属性到父组件的传递
					this.localValue=val;
				}
			}
		});
	</script>
	<!--agent-select1===定义结束===-->

	<!--agent-select2===定义开始===-->
	<script type="text/x-template" id="t-agent-select2">
		<select v-model="localValue" @input="updateVal($event.target.value)" :placeholder="placeholder">
			<option v-for="v in options" :key="v.value" :value="v.value">{{v.label}}</option>
		</select>
	</script>
	<script type="text/javascript">
		Vue.component("agent-select2",{
			template:"#t-agent-select2",
			props:["options","value","placeholder"],//通过props实现数据到子组件的传递
			data: function(){
				return {localValue:null}
			},
			methods: {
				updateVal: function(val){
					this.localValue=val;
					this.$emit("input",val);//通过事件实现组件属性到父组件的传递
				}
			}
		});
	</script>
	<!--agent-select2===定义结束===-->


	<script type="text/javascript">

		// Vue实例化
		new Vue({
			el:"#app",
			data: {
				selectAgent1:"",//组件1选中值
				selectAgent2:"",//组件2选中值
				agents:[
						{value:"",label:""},
						{value:1,label:"代理商01"},
						{value:2,label:"代理商02"},
						{value:3,label:"代理商03"},
						{value:4,label:"代理商04"}
				]//代理商列表
			}		
		});
 
	</script>
    
    
    
</body>
</html>
分享到:
评论

相关推荐

    Vue自定义组件双向绑定实现原理及方法详解

    Vue自定义组件双向绑定是Vue框架中一个强大的特性,它使得父子组件间的通信更为便捷,提高了代码的可维护性和复用性。本文将深入探讨Vue自定义组件双向绑定的实现原理与方法,以及如何改进组件设计,使其更易于使用...

    使用VUE自定义组件封装数据字典实战

    本文主要探讨的是如何使用Vue自定义组件来封装数据字典,以下拉列表为例。 首先,使用Element UI的`el-select`组件可以直接创建下拉列表,但这种方式在处理多个字典数据时会变得复杂。因为每个字典都需要单独请求...

    Vue 3.0双向绑定原理的实现方法

    Vue.js作为前端开发中广泛应用的JavaScript框架,其核心功能之一便是实现了数据的双向绑定。...通过上述介绍的原理和代码实现,相信开发者可以对Vue.js的双向绑定有了更深层次的认识,并在项目开发中灵活运用。

    【JavaScript源代码】vue自定义组件实现v-model双向绑定数据的实例代码.docx

    然而,Vue 的自定义组件也可以实现 `v-model` 的双向绑定,使得在自定义组件中使用 `v-model` 变得像使用内置组件一样方便。 在自定义组件中实现 `v-model` 双向绑定分为两种主要的方式: 1. **第一种方式**: - ...

    Vue父子组件双向绑定传值的实现方法

    父子组件之间的双向绑定非常简单,但是很多人因为是从Vue 2+开始使用的,可能不知道如何双向绑定,当然最简单的双向绑定(单文件中)就是表单元素的 v-model 了,例如 &lt;input type=text /&gt; 它会响应表单元素的...

    【JavaScript源代码】web面试vue自定义组件及调用方式.docx

    Vue自定义组件是其核心特性之一,能够帮助开发者构建复杂的用户界面。本篇将详细介绍在Vue中如何自定义组件以及两种不同的调用方式。 首先,自定义组件的基本步骤包括创建组件模板、注册组件和在父组件中使用。在...

    vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法

    上篇文章给大家介绍了浅析Vue自定义组件的v-model,大家可以参考下。接下来通过本文给大家介绍vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法,具体详情如下所示: 父子组件通信,都是单项的,很多...

    关于前端开发框架vue中的v-model双向绑定自定义组件(第二版)

    在前端开发领域,Vue.js是一个极其流行的轻量级框架,以...通过以上讲解,你应该对如何在Vue中为自定义组件实现`v-model`双向绑定有了深入理解。熟练掌握这一特性,能帮助你在实际项目中构建更灵活、可维护的前端应用。

    vue双向绑定简单实现

    除了基础的文本输入,Vue还支持多种类型的双向绑定,如`v-model`可以与`checkbox`、`radio`、`select`等不同类型的表单元素配合使用,甚至支持自定义组件的双向绑定。 Vue的双向绑定极大地提高了开发效率,让开发者...

    vue.js自定义组件实现v-model双向数据绑定的示例代码

    我们都清楚v-model其实就是vue的一个语法糖,用于在表单控件或者组件上创建双向绑定。 //表单控件上使用v-model &lt;input type=text v-model=name /&gt; &lt;input type=checkbox v-model=checked/&gt; &lt;!-...

    vue自定义开关组件.zip

    - 在Vue中,我们可以创建一个名为`Switch`的组件,用`v-model`来双向绑定其值,这样可以轻松地在组件与父组件之间传递状态。 3. **项目结构分析** - `index.html`: 这是项目的入口文件,通常包含`&lt;div id="app"&gt;...

    解决VUE双向绑定失效的问题

    总之,解决Vue双向绑定失效的问题需要开发者全面掌握Vue的工作原理,了解组件的内部机制,并结合具体问题采取相应的策略。通过不断的实践和学习,我们将能够更有效地利用Vue.js提供的强大功能,构建稳定和高效的前端...

    vue子组件改变父组件传递的prop值通过sync实现数据双向绑定(DEMO)

    总结起来,`sync`修饰符是Vue中处理子组件修改父组件prop的一种有效方法,它通过自定义事件实现了数据的“双向绑定”效果。通过理解其工作原理,开发者可以在保持单向数据流的同时,灵活地在组件间同步数据。在实际...

    2.(原理分析类)vue如何实现双向绑定?.rar

    6. **事件系统**:在表单元素上,Vue使用自定义事件来实现数据的双向绑定。例如,`v-model`在输入框中监听`input`事件,当用户输入时触发该事件,更新数据模型。 在`myvue`这个示例中,可能会包含一个简单的Vue组件...

    Vue2xUEditorvmodel双向绑定

    总之,Vue2xUEditorvmodel双向绑定是一个将Vue的数据驱动特性应用到UEditor的实践,通过自定义组件和事件监听,实现了Vue实例与UEditor之间的双向数据同步。在实际开发中,这可以极大地简化富文本编辑器与Vue应用...

    解决Vue2.x父组件与子组件之间的双向绑定问题

    "解决Vue2.x父组件与子组件之间的双向绑定问题" Vue.js是一款流行的前端框架,它提供了强大的组件化和数据绑定机制。但是,在使用Vue时,开发者经常遇到的一问题就是父组件与子组件之间的双向绑定问题。双向绑定是...

    vue-dialog:vue自定义弹窗组件(含回调)

    `vue-dialog`就是一个用于创建此类自定义弹窗的组件库,它支持回调功能,能够很好地与Vue实例进行通信,实现数据的双向绑定。 `vue-dialog`的核心特点是可配置性和灵活性,允许开发者自定义弹窗的样式、内容和行为...

    Vue2实现组件props双向绑定

    总之,在Vue2中,我们可以通过创建props的副本并配合`watch`或`v-model`来模拟实现组件props的双向绑定,但这并不意味着我们应该频繁地在组件内部修改props。在大多数情况下,遵循单向数据流原则可以使应用的数据流...

Global site tag (gtag.js) - Google Analytics