首页 > 解决方案 > 如何检查是否没有选定的值然后选择第一项?

问题描述

我正在尝试在 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 行中进行循环。怎么可能修复?

标签: javascriptvue.jsecmascript-6vuejs2vue-component

解决方案


如果我理解正确,您正在尝试向 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}
    }

推荐阅读