如何在加载时从数据库中预先 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
来解决它。
我在 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
来解决它。