我正在尝试使用bootstrap-vue动态添加下拉列表项,但我遇到了渲染下拉列表项到浏览器的问题。以下是我目前的代码,非常感谢您提供任何建议。我希望它可以动态地改变下拉列表项,这样如果原始的JSON数据发生更改,下拉列表项也会随之更改而无需返回更改代码。
注意:reportData是一个对象列表,这就是为什么我将reportData的第一个元素设置为新数据newData,以便从中呈现下拉列表项的原因。
下拉列表组件:
注意:reportData是一个对象列表,这就是为什么我将reportData的第一个元素设置为新数据newData,以便从中呈现下拉列表项的原因。
下拉列表组件:
<section class="drop-down">
<div>
<b-dropdown id="dropdown-list" text="Error Reports" class="m-md-2">
<b-dropdown-item >ITEM</b-dropdown-item>
<b-dropdown-divider></b-dropdown-divider>
</b-dropdown>
</div>
<button @click="changeReport">Click to change</button>
</section>
</template>
<script lang="js">
export default {
name: 'drop-down',
props:['reportData'],
data () {
return {
newData: this.reportData[0]
}
},
methods: {
changeReport(){
this.newData = this.reporData[1]
}
},
watch: {
newData : function(val, OldVal){
var dropdownList = document.getElementById("dropdown-list")
for (var key in val){
console.log(key)
var dropdownItem = document.createElement('b-dropdown-item')
dropdownItem.value = key
dropdownList.add(drowdownItem, 0)
}
}
}
}
</script>
<style>
</style>
new Vue({ el: "#app", data: { reportData: [{ text: 'Item 1 Text', value: 'Item 1 Value' }, { text: 'Item 2 Text', value: 'Item 2 Value' }, { text: 'Item 3 Text', value: [{ text: 'Item 1 Text', value: 'Item 1 Value' }, { text: 'Item 2 Text', value: 'Item 2 Value' }, }], } })
- codemonkey