visual-studio - VS 语法:`option` 不能嵌套在`span` 中
问题描述
我正在创建一个自定义 Vue 组件,该组件用作将 jQuery Select2 小部件应用于传统 HTMLselect
元素的包装器。
一切正常,但 Visual Studio 对我实现解决方案的方式发出语法警告:
<select2 v-on:change="change($event)">
<option></option>
<option v-for="(option, optionIndex) in options"
v-bind:key="optionIndex"
v-bind:value="option.value">{{option.text}}</option>
</select2>
每个option
元素下方都有一条绿色波浪线,并带有以下注释:
元素“选项”不能嵌套在“跨度”内。
信息清晰易懂。option
元素应该在里面select
,但由于我使用的是自定义select2
组件,Visual Studio 变得很困惑。
我遇到的问题是我的自定义组件实际上只是一个select
元素的包装器,因此它在技术上会产生适当的输出。
有没有办法强制 Visual Studio 忽略这种特殊情况,所以我的滚动条中不会出现语法警告?
有没有另一种方法来实现这个组件,所以它不会抱怨?
我在想我可能能够添加另一个道具options
并传入一个数组以option
在组件内创建节点而不是通过插槽传递它们,但这变得复杂,因为我们有很多组件使用不同的选项属性来产生值和文本(即option.label
andoption.id
而不是option.text
and option.value
),所以看起来插槽最适合我们的需求。
我的另一个想法是创建一个select2option
组件,它只是标准选项的包装器,但这似乎太过分了,我无法想象我们的其他开发人员会直观地使用这些标准option
元素。
只是想知道是否有任何关于 Visual Studio 的方法可以在不完全关闭语法的情况下纠正这种行为。
解决方案
Per DOM Template Parsing Caveats,你应该能够做到
<select is="select2" v-on:change="change($event)">
<option></option>
<option v-for="(option, optionIndex) in options"
v-bind:key="optionIndex"
v-bind:value="option.value">{{option.text}}</option>
</select>
另请注意,正确的做法是在组件名称中使用连字符。
推荐阅读
- java - 我正在尝试使用 java 记录保存项目,但程序似乎无法连接到数据库
- java - 有什么办法可以减少代码量?
- python - 如何动态地将函数名称和输入传递给 multiprocessing.process?
- php - 1215 一般错误:无法添加外键约束 Laravel
- python - Python 类(''对象没有属性'')
- azure - 无法将查找活动输出映射到 ADF 中的复制活动映射
- c - 2d char 指针分段错误
- r - Auto.Arima 非常适合,除了单个尖刺
- python - 如何通过Python中的所有行组合?
- javascript - 如何在 vue js 中触发元素?