javascript - 如何检查是否没有选定的值然后选择第一项?
问题描述
我正在尝试在 Array 中的每个对象内添加新值,如果没有选定的标签,那么它将从下拉列表中选择第一个选项。关键是还有另一个从下拉列表中选择项目的功能。我怎样才能让它们正确地协同工作?
<b-dropdown aria-role="list">
<b-button
icon-right="caret-down"
class="ToolbarButton"
size="is-small"
>
<span> isTagSelected(selectedProduct) </span>
</b-button>
<b-dropdownitem
v-for="selectedTag in selectedProduct.tags"
:key="selectedTag.id"
aria-role="listitem"
@click="selectTag(selectedProduct, selectedTag)"
>
{{ selectedTag.title }}
</b-dropdownItem>
js
isTagSelected(selectedProduct) {
if (!selectedProduct.tagTitle && selectedProduct.tags.length) {
this.$set(selectedProduct.tags[0].id, 'tagId')
this.$set(selectedProduct.tags[0].title, 'tagTitle')
return selectedProduct.tagTitle
}
else { return selectedProduct.tagTitle}
},
selectTag: function(selectedProduct, selectedTag) {
for (var i = 0; i < this.selectedProducts.length; i++) {
if (this.selectedProducts[i].id === selectedProduct.id) {
this.$set(this.selectedProducts[i], "tagId", selectedTag.id);
this.$set(this.selectedProducts[i], "tagTitle", selectedTag.title);
}
}
}
isTagSelected 函数抛出一个错误,我们无法在 this.$set 行中进行循环。怎么可能修复?
解决方案
如果我理解正确,您正在尝试向 selectedProduct 添加道具。如果您认为此逻辑正确,请告诉我:
isTagSelected(selectedProduct) {
if (!selectedProduct.tagTitle && selectedProduct.tags.length) {
this.$set(selectedProduct, 'tagId', selectedProduct.tags[0].id)
this.$set(selectedProduct, 'tagTitle', selectedProduct.tags[0].title)
return selectedProduct.tagTitle
}
else {
return selectedProduct.tagTitle}
}
推荐阅读
- reactjs - 将自定义道具与 RouteComponentProps 组合时缺少位置、历史和匹配属性
- asp.net-core - 如何使用 OpenIdConnect 身份验证登录 ASP.NET Core 身份用户?
- ckan - 是否可以在 CKAN Data Explorer 默认预览中隐藏 _id 列?
- jquery - JqueryUI 数据表设置记录总数
- c - 为什么 C 文件流的开头称为“SEEK_SET”?
- php - jQuery ajax 响应返回格式化的 HTML
- amazon-web-services - 在 Terraform 中使用已创建资源的最佳实践是什么?
- ruby-on-rails - Rails 6 使用 bundler 2 部署到 Heroku,但仍然卡顿
- python - 动画 x 和 y 数组
- excel - 宏只运行第一个结果