iview Radio绑定点击事件

说明:做一个风险问卷调查,topicsData为一个存放题目的数组, contentData存放的是每个题目对应的选项,存放格式如下:
在这里插入图片描述
在这里插入图片描述
代码:

<Card  v-for="(item, index) in topicsData" :key="index">
      <div >
         <h5 >{{index+1}}.{{item}}</h5>
         <!-- 加上:label="index1"才实现了radio的单选功能,并且是在radio中进行v-for,而不是radiogroup -->
		 <RadioGroup  vertical>
				<Radio v-for="(item1, index1) in contentData[index]"  :key="index1" :label="index1" >
					<Icon type="social-apple"></Icon>
					<span>{{contentData[index][index1]}}</span>
				</Radio>
		</RadioGroup>
	  </div> 
</Card>

需求: 现需要根据选择的每个选项,返回选项的的得分数组,已经设置每个选项的得分为1,2,3,4(递增), 例如返回十个问题的选择数组为[1,3,1,4,2,3,2,4,1,1]。

所以需要给每组radio添加点击事件,看iview文档有自带的on-change函数,但是我在radio中添加这个函数没有什么反应。那我想到给iview Radio 组件的时候点击绑定一个@click事件,但是也不会有任何效果,百度得:这是因为vue的事件处理是监听的DOM事件,而iView内的组件不属于DOM。用以下代码解释下为什么。

父组件代码:
在这里插入图片描述
子组件Child代码:
在这里插入图片描述
浏览器展示,点击父组件会打印出内容,子组件不会有反应:
在这里插入图片描述
这是因为当在组件的标签上去监听click事件,默认的话会去监听一个叫click的自定义事件,而该子组件里没有$emit(‘click’)自定义事件,所以在父组件里面是监听不到自定义事件。

解决办法1:此时我们想使用的是个原生的click函数,所以可以使用.native 修饰符
若在组件的标签上去监听原生事件的话,需要加上.native 修饰符
若在普通的标签,则可以直接监听它的原生事件

既然 Radio 不支持click,那就想办法在能让元素响应 click


解决办法2:既然 Radio 不支持click,那就想办法在能让元素响应 click。在Radio外包裹一层标签: div/span,可以在外标签上添加点击事件,弊端是需要给 Radio增加一个包裹元素,可能还需要对元素写个样式,不要影响到原Radio 元素布局。

而此时,采用方法1 适合:

<Card  v-for="(item, index) in topicsData" :key="index">
      <div >
         <h5 >{{index+1}}.{{item}}</h5>
         <!-- 加上:label="index1"才实现了radio的单选功能,并且是在radio中进行v-for,而不是radiogroup -->
		 <RadioGroup  vertical>
				<Radio @click.native="change(index,index1)" v-for="(item1, index1) in contentData[index]"  :key="index1" :label="index1" >
					<Icon type="social-apple"></Icon>
					<span>{{contentData[index][index1]}}</span>
				</Radio>
		</RadioGroup>
	  </div> 
</Card>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用和提供了关于iviewradio按钮和点击事件的示例代码。在iview中,可以使用RadioGroup组件和Radio组件来创建radio按钮组件。通过设置v-model属性来绑定数据,通过@on-change事件来触发点击事件。在示例中,当点击单选按钮时,会触发changeModel方法,并通过改变数据来实现相应的逻辑。例如,在的示例中,当点击单选按钮并选择"否"时,会触发changeModel方法,将model.planType置为空。这样就可以实现对radio按钮的点击事件的处理。这是iview中给radio按钮组件加点击事件的实例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [iView 使用 radio 控制下面输入框的显示隐藏](https://blog.csdn.net/weixin_43900414/article/details/116045502)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [iview使用Radio实现单选](https://blog.csdn.net/weixin_41996632/article/details/89360484)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [iviewradio按钮组件加点击事件的实例](https://download.csdn.net/download/weixin_38647039/12771795)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值