uniapp 微信小程序:v-model双向绑定问题(自定义 props 名无效)

这篇具有很好参考价值的文章主要介绍了uniapp 微信小程序:v-model双向绑定问题(自定义 props 名无效)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

VUE中父子组件传递数据的基本套路:

  1. 父传子 props
  2. 子传父 this.$emit('事件名', '数据');
  3. 使用 sync 修饰符,实现支持同步数据

问题

uniapp 微信小程序:v-model双向绑定问题(自定义 props 名无效),# uni-app,WeChat微信,uni-app,小程序,v-modeluniapp 微信小程序:v-model双向绑定问题(自定义 props 名无效),# uni-app,WeChat微信,uni-app,小程序,v-model
因为用的是 uniapp 开发小程序,所以要考虑到兼容性问题,不要把自己当正经VUE2。
小程序虽然支持 v-model 指令,但不支持 model 选项。
所以要么子组件中声明默认的 value 这个 props 来接收值。
要么手动:绑定属性事件

双向绑定示例

使用 v-model

由于小程序不支持 model 选项。
这个方案中:子组件里只能使用 value 接收数据,更新时触发 input

  • 父组件
<template>
	<view>
		<view><text>父组件:{{ msg }}</text></view>
		<vmodel-component v-model="msg"></vmodel-component>
	</view>
</template>

<script>
	export default {
		data() {
			return { msg: '大家好,我是:使用 v-model' }
		},
		methods: {}
	}
</script>

<style>
</style>
  • 子组件
<template>
	<view> 
		<view> 子组件:{{value}}  </view>
		<button @click="onclick" >更新</button>
	</view>
</template>

<script>
	export default {
		data() {return {};},
		props:{
			value:{ type: String, default: "未收到父值" }
		},
		methods:{
			onclick(e){
				this.$emit('input', '我是笨笨'); // v-mode 
			}
		}
	}
</script>

<style>
</style>

使用 v-bind + v-on

当然一般都会用简写形式:
v-bind:缩写为 :
v-on:缩写为 @

由于是自己手绑定,props事件名都可以自己定。
比如在子组件中我就用 msg 接收数据。
事件我自己取名叫 customEvent

<template>
	<view>
		<view><text>父组件:{{ msg }}</text></view>
		<novmodel-component :msg="msg" @customEvent="e => msg = e"></novmodel-component>
		<!-- <novmodel-component :msg="msg" @input=" msg = $event "></novmodel-component> -->
	</view>
</template>

<script>
	export default {
		data() {
			return { msg: '大家好,我是:不使用 v-model' }
		},
		methods: {}
	}
</script>

<style>
</style>
  • 子组件
<template>
	<view> 
		<view> 子组件:{{msg}}  </view>
		<button @click="this.$emit('customEvent', '我是笨笨')" >更新</button>
	</view>
</template>

<script>
	export default {
		data() {return {};},
		props:{
			msg:{ type: String, default: "未收到父值" }
		},
		methods:{}
	}
</script>

<style>
</style>

使用 sync 修饰符

使用 sync 时可以自己决定绑到子组件的哪个 props 上,比如就绑到了 msg 上。
同步数据时触发 update:要更新的props

  • 父组件
<template>
	<view>
		<view><text>父组件:{{ msg }}</text></view>
		<sync-component :msg.sync="msg"></sync-component>
	</view>
</template>

<script>
	export default {
		data() {
			return { msg: '大家好,我是:使用 sync 修饰符,实现同步数据' }
		},
		methods: {}
	}
</script>

<style>
</style>
  • 子组件
<template>
	<view> 
		<view> 子组件:{{msg}}  </view>
		<button @click="$emit('update:msg', '我是笨笨')" >更新</button>
	</view>
</template>

<script>
	export default {
		data() {return {};},
		props: {
			msg: { type: String, default: "未收到父值" }
		},
		methods:{}
	}
</script>

<style>
</style>

参考资料

uniapp官方文档 :模板指令 v-model
uniapp官方文档 :.sync 修饰符

vue2官方文档:选项 model文章来源地址https://www.toymoban.com/news/detail-615283.html

到了这里,关于uniapp 微信小程序:v-model双向绑定问题(自定义 props 名无效)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序实现双向绑定

    简易双向绑定 在 WXML 中,普通的属性的绑定是单向的。例如: 如果需要在用户输入的同时改变 this.data.value ,需要借助简易双向绑定机制。此时,可以在对应项目之前加入 model: 前缀: 用于双向绑定的表达式有如下限制: 只能是一个单一字段的绑定,如: 目前,尚不能 data

    2024年02月06日
    浏览(41)
  • 微信小程序-----input数据双向绑定

    这里介绍两种获取的方式: 1、用户每输入一个字节就获取一个字节 2、用户全部输入结束了之后,再一起获取整个input输入框的值 注意:第二种方式会比较节省内存资源 第一种方式:         原理:我们使用bindinput事件来获取input的输入值,然后根据dataset获取要跟 data数组里

    2024年02月08日
    浏览(41)
  • vue3 antd项目实战——Form表单的提交与校验【v-model双向绑定input输入框、form表单数据,动态校验规则】

    本文依旧沿用 ant design vue 组件库和 ts 语言🔥🔥更多内容见Ant Design Vue官方文档 🔥🔥 vue3 antd项目实战——Form表单【后台管理系统 v-model数据的双向绑定,input输入框、Radio单选框的嵌套使用】 在上期文章中,我们完成了 UI界面的渲染 (渲染效果如下图),本期文章将带着大

    2023年04月22日
    浏览(85)
  • 微信小程序form页面数据双向绑定data路径

    在开发过程中数据经常以对象方式组织,对页面修改数据进行保存时使用this.data.obj无法获取修改后数据。 1.只能是一个单一字段的绑定 2.目前,尚不能 data 路径,如 这通常不满足我们日常开发需要 通过在input框中设置 name 属性, 然后在函数中使用 e.detail.value 获取form数据 网上

    2024年02月13日
    浏览(45)
  • 微信小程序复杂对象的双向绑定(附代码可直接使用)

    最近在小程序的开发过程中,遇到一个需求,需要绑定一个list到自定义表单组件,组件根据列表渲染表单,表单的值需要和父组件双向绑定。 但是这里却出现了问题,本人先使用vue的方式将list直接做整体绑定。 结果在子组件内部使用setData对list的属性做出变更时直接报错栈

    2024年02月09日
    浏览(68)
  • 关于微信小程序中的数据双向绑定如何实现

    前言 官方文档:微信小程序双向绑定语法 在 WXML 中,普通的属性的绑定是单向的。例如: 如果使用 this.setData({ value: ‘leaf’ }) 来更新 value ,this.data.value 和输入框的中显示的值都会被更新为 leaf ;但如果用户修改了输入框里的值,却不会同时改变 this.data.value 。 如果需要在

    2024年02月05日
    浏览(51)
  • vue3 antd项目实战——radiogroup单选组合、radiobutton单选按钮【v-model双向绑定数据、v-for循环输出options选择项】

    🔥🔥更多内容见Ant Design Vue官方文档 🔥🔥 vue3+ant design vue+ts实战【ant-design-vue组件库引入】 🔥vue3【列表渲染】v-for 详细介绍(vue中的“循环”) 最近在项目开发中需要使用到 ant design vue 组件库的 单选框(Radio)组件 。所以本期文章会详细地教大家 如何使用Radio单选框 。

    2024年02月16日
    浏览(53)
  • 完美应对微信小程序的数据管理,从数据双向绑定开始

    微信小程序因为诸多限制所以它无法像 vue 那样通过指令进行数据绑定,那微信小程序有没有什么办法可以实现数据的双向绑定呢?今天给大家分享两种微信小程序数据绑定的方法。 当点击 form 表单中 form-type 为 submit 的 button 组件时,会将表单组件中的 value 值进行提交,需要

    2024年02月11日
    浏览(43)
  • vue3中setup的两个参数 props,context (attrs,emit,slots),vue3中的双向数据绑定自定义事件emit和v-model

    目录 setup函数 props参数 案例 第一种写法(用setup函数的方式):  第二种方法(语法糖形式即setup写入script标签中)也可以传值,  context (attrs,emit,slots) vue3中的双向数据绑定自定义事件emit和v-model emit自定义事件 v-model 有两个参数分别是 props,context 即 props参数是一个 对象 ,

    2024年02月10日
    浏览(42)
  • Vue (v-bind指令、el与data的两种写法、理解MVVM、数据代理、V-no事件处理、双向数据绑定V-model、登陆页面实现

    V-no用于监听DOM对象 v-model 指令用来在 input、select、textarea、checkbox、radio 等表单控件元素上创建双向数据绑定,根据表单上的值,自动更新绑定的元素的值。 按钮的事件我们可以使用 v-on 监听事件,并对用户的输入进行响应。 下拉选项实例:

    2024年01月23日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包