Это известная проблема, и одно возможное решение предоставляется drop.levels()
в пакете gdata , где ваш пример становится
> drop.levels(subdf)
letters numbers
1 a 1
2 b 2
3 c 3
> levels(drop.levels(subdf)$letters)
[1] "a" "b" "c"
Существует также dropUnusedLevels
в пакете Hmisc . Однако он работает только путем изменения оператора подмножества [
и здесь неприменим.
В качестве следствия прямой подход на основе столбца является простым as.factor(as.character(data))
:
> levels(subdf$letters)
[1] "a" "b" "c" "d" "e"
> subdf$letters <- as.factor(as.character(subdf$letters))
> levels(subdf$letters)
[1] "a" "b" "c"
Свяжите v-switch
, используя v-model
, со значением data
и используйте его.
<v-switch
v-model='switchValue'
:name="['leave_it_' + listItem.asset_id]"
@change="setAction(listItem)"
>
</v-switch>
data: {
return {
switchValue: false
}
}
var action = this.switchValue ? "Leave it Alone" : "Take an Action";
Кроме того, вы можете полностью потерять :name
. И вместо @change
вы можете watch
switchValue
. Это путь Vue .
watch:{
theSwitch(newValue){
}
}
Вот пример привязки нескольких флажков.
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js">
js ">
</script>
<div id="app">
<div v-for='i of count'>
<label>
Item {{i}}
<input v-model=checks[i] type='checkbox'></input>
</label>
</div>
<div>Values: {{checks}}</div>
</div>
<script>
var app = new Vue({
el: '#app',
data: {
count: 10,
checks: Array(10).fill(false),
},
watch: {
checks(value) {
console.log('value changed', value)
}
}
})
</script>