@metalsadman ok, I had no idea you could set a watcher on a computed property! watch: { 'computedOptionsB': function (value) { if (value.length === 1) { this.model.b = value[0].value } } } and this allowed me to return my computed property to a no-side effects mode: computedOptionsB() { return options.b.filter(o => matchFilterKey(o.filterKey, this.model, 1)) }, Thanks!