如何在加载时从数据库中预先 select "sw-entity-multi-select" 组件值

How to pre-select "sw-entity-multi-select" component values from the database on load

我在 Shopware 6 的自定义 vue 组件中使用 sw-entity-multi-select 作为产品下拉列表

<sw-entity-multi-select
        entity="product"
        :criteria="listingCriteria"
        :entityCollection="products"
        :isLoading="isLoading"
        @change="setProduct"
        :label="$tc('sw-cms.elements.productSlider.config.placeholder.selection')"
        :placeholder="$tc('sw-cms.elements.productSlider.config.placeholder.selection')"
>
</sw-entity-multi-select>

我这样取产品:

    getProducts () {
      this.products = new EntityCollection(
        this.productRepository.route,
        this.productRepository.entityName,
        Context.api
      )

      if (this.productIds.length <= 0) {
        return Promise.resolve()
      }

      this.listingCriteria.setIds(this.productIds)

      return this.productRepository.search(this.listingCriteria, Context.api).then((items) => {
        this.products = items
      })
    },

    setProduct (collection) {
      this.productIds = collection.getIds()
      this.products = collection
    },

第一次保存 ID 一切正常,但我无法在重新加载时再次填充已保存的产品。

如果我根据数据库的值设置 this.productIds,例如 response.data.productIds 并调用 this.getProducts(),它会很好地选择那些产品,但只有那 2 或 3 种产品可用下拉菜单,搜索其他产品时显示“无结果”消息。

总之,我不能再添加额外的产品了。有什么建议吗?

我对其他一些实体也使用常规 <sw-multi-select>,它工作正常,因为我对这些实体的记录少于 500 条。但是对于我有超过 150k 产品的产品,所以我不能一次将它们全部填充在一起,所以我需要 <sw-entity-multi-select> 的功能,因为它会根据要求调用其他产品,我最初只能加载 25 或 50 个产品下拉菜单。

如果有人偶然发现这个问题,我通过在组件上将 productIds 设置为 v-model 来解决它。