You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
1.8 KiB
88 lines
1.8 KiB
Component({
|
|
externalClasses: ['l-class', 'l-disabled-class'],
|
|
behaviors: ['wx://form-field'],
|
|
relations: {
|
|
'../radio-group/index': {
|
|
type: 'parent'
|
|
}
|
|
},
|
|
properties: {
|
|
key: String,
|
|
cell: Object,
|
|
// radio的大小
|
|
size: {
|
|
type: String,
|
|
value: '38rpx'
|
|
},
|
|
disabled: {
|
|
type: Boolean
|
|
},
|
|
custom: Boolean,
|
|
color: {
|
|
type: String,
|
|
value: '#ccc'
|
|
},
|
|
// 选中后的颜色
|
|
selectColor: {
|
|
type: String,
|
|
value: '#3963BC'
|
|
},
|
|
disabledColor: {
|
|
type: String,
|
|
value: '#ccc'
|
|
},
|
|
placement: {
|
|
type: String,
|
|
value: 'left'
|
|
},
|
|
transition: {
|
|
type: Boolean,
|
|
value: true
|
|
}
|
|
},
|
|
data: {
|
|
checked: false
|
|
},
|
|
methods: {
|
|
setChecked(checked) {
|
|
this.setData({
|
|
checked,
|
|
});
|
|
},
|
|
// 点击radio
|
|
onRadioChangeTap() {
|
|
if (this.properties.disabled) {
|
|
return;
|
|
}
|
|
const parent = this.getRelationNodes('../radio-group/index')[0];
|
|
const noneChecked = parent.properties.noneChecked;
|
|
const isCurrent = this.isCurrentSelectedKey(parent);
|
|
let select = true;
|
|
if (isCurrent) {
|
|
select = false;
|
|
if (!noneChecked) {
|
|
return;
|
|
}
|
|
}
|
|
const checked = !this.data.checked;
|
|
this.data.checked = checked;
|
|
|
|
// 子组件不能修改父组件属性
|
|
// parent.properties.current = null
|
|
const item = {
|
|
checked,
|
|
key: this.properties.key,
|
|
cell: this.properties.cell
|
|
};
|
|
if (parent) {
|
|
parent.onEmitEventHandle(item, select);
|
|
}
|
|
},
|
|
|
|
isCurrentSelectedKey(parent) {
|
|
const currentKey = parent.properties.current;
|
|
return currentKey === this.properties.key;
|
|
}
|
|
}
|
|
});
|