【发布时间】:2018-04-14 01:52:50
【问题描述】:
我想通过 fork vue-play 为新组件添加一些自己的场景。
我在更复杂的 vue-select 案例中遇到了问题,尤其是双向值同步。
进入这个场景会收到警告:
vue.esm.js:571 [Vue 警告]:属性或方法“syncedVal”不是 在实例上定义但在渲染期间引用。
并且下拉菜单中也没有预先选择任何选项。尽管在组件的道具中定义了syncedVal,但我无法理解为什么我不断收到此警告。
我在vue-play/play 中添加了两个文件:
VSelect.vue:
<template>
<v-select v-model="selected" :options="options"></v-select>
</template>
<script>
import Vue from 'vue'
import vSelect from 'vue-select'
Vue.component('v-select', vSelect);
export default {
props: {
options: {
default: function() { return ['one', 'two'] },
type: Array
},
onchangeCallback: {
default: () => () => null
},
// doesn't seem to work:
syncedVal: {
default: 'one',
type: String
}
},
data() {
return {
selected: null
}
}
}
</script>
和VSelect.play.js:
import {play} from '../src/play'
import VSelect from './VSelect.vue'
play(VSelect)
.name('VSelect')
.displayName('VSelect')
.add('default', '<v-select />')
.add('multiple', '<v-select multiple />')
.add('custom options', `<v-select :options="['custom1','custom2']" />`)
.add('custom options with labels', `<v-select :options='[{value: "CA", label: "Canada"}, {value: "UK", label: "United Kingdom"}]' />`)
.add('2-way value sync', `<v-select :value.sync="syncedVal" />`) // doesn't seem to work
【问题讨论】:
-
这是 Vue1 还是 2?在 Vuejs2 中删除了
.sync属性值,选择仅使用 props 进行父->子通信和使用事件进行子value 道具在您的自定义组件中实现v-model并发出input事件,如此处所示 vuejs.org/v2/guide/… -
@JustinMacArthur
sync在 2.3 中重新添加。 vuejs.org/v2/guide/components.html#sync-Modifier -
@van_folmert 好吧,你每天都在学习新东西。谢谢你。
-
你在哪里使用
syncedVal? -
@user2968356 in
VSelect.vue,应该取自默认属性
标签: javascript vue.js