vue2 组件 计算属性 双向绑定

改变原数组方法可以响应式返回双向绑定结果

push() - 向数组的末尾添加一个或多个元素,并返回新的长度。
pop() - 删除数组的最后一个元素,并返回被删除的元素。
shift() - 删除数组的第一个元素,并返回被删除的元素。
unshift() - 在数组的开头添加一个或多个元素,并返回新的长度。
splice() - 通过删除现有元素和/或添加新元素来修改数组,改变原数组的内容。
sort() - 对数组的元素进行排序,并直接改变原数组。
reverse() - 将数组中元素的位置颠倒,直接改变原数组。
fill() - 用一个固定值填充一个数组中从起始索引到终止索引内的全部元素,直接改变原数组。
copyWithin() - 在数组内部,将一段元素序列拷贝到另一段位置上覆盖原有的序列,直接改变原数组。

<template>
	<view class="">
		<slot>
			<view class="list">
				<view :class="{'checked': selectValue.includes(item[valueKey]),'disabled': (disabled || item.disabled) }"
					v-for="(item,index) in options" :key="index" @click.stop="onSelect(item, index)">
					<view class="checkbox">
						<view class="checked_gou"></view>
					</view>

					<text class="text">{{ item[labelKey] }}</text>
				</view>
			</view>
		</slot>
	</view>
</template>

<script>

	export default {
		name: "my-radio-group",
		props: {
			value: {},
			options: {
				default: () => []
			},
			labelKey: {
				type: String,
				default: "label"
			},
			valueKey: {
				default: "value"
			},
			
		},
		data() {
			return {
			
			};
		},
		
		computed: {
			selectValue(){
				let value = this.value;
				let newValue = []
				if (value || value === 0) {
					newValue = Array.isArray(value) ? value : Array.of(value)
				}
				console.log('计算选中的值: ', newValue);
				return newValue
			},
		},
		methods: {
			async onSelect(item, index) {
				
				this.selectValue.push(item[this.valueKey])

			},

		},
	}
</script>

<style lang="scss" scoped>

</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值