O dropdown está trazendo as informações corretas, mas não está alterando o repetidor.
E o repetidor mostra apenas o primeiro item da lista (obra = results.items[0]._id), mas se tirar o [0] não traz informação.
Gostaria de mostrar todos os resultados (results.items) e quando alterasse o dropdown trouxesse as informações corretas.
async function detectarObra() {
await wixData.queryReferenced("Clientes", user.empresa, "Obra-2")
.then(async (results) => {
if (results.items.length > 0) {
obra = results.items[0]._id
$w("#dataset2").setFilter(wixData.filter().eq('_id', obra)) //Dataset da OBRA
let options = [{ "value": '', "label": '' }];
options.push(...results.items.map(obra => {
return { "value": obra._id, "label": obra.descricao };
}));
$w('#ddObra').options = options;
} else {
displayErro($w('#txtAlerta'), "Não foram encontrados resultados")
}
})
.catch((err) => {
let errorMsg = err;
});
}
export function repeater1_itemReady($item, itemData, index) {
$w('#dataset3').onReady(async () => {
detectarObra();
console.log()
})
}
export function ddObra_change(event) {
detectarObra();
console.log($w("#ddObra").value)
}
Olá, Amanda!
Construí um código um pouco diferente do seu mas baseado na sua necessidade.
Nesse site você pode ver o funcionamento do código e aqui está ele:
import wixData from "wix-data"; $w.onReady(() => { loadContinents() }); //trazer a lista de itens do banco de dados referenciado function loadContinents() { wixData.query('Continents') .find() .then(res => { let options = [{"value": '', "label": 'All Continents'}]; options.push(...res.items.map(continent => { return {"value": continent.title, "label": continent.title}; })); $w('#iContinent').options = options; }); } //acionar o filtro ao alterar o dropdown export function iContinent_change(event) { let selectedContinent = $w('#iContinent').value // chamar a função com o parâmetro filterReferenced(selectedContinent) } // função de filtro por busca de referência async function filterReferenced(cont) { //buscar titulo do item referenciado let newSelection = (await wixData.query('Continents') .eq('title', cont) .find()).items[0]; console.log(newSelection.title) //buscar itens do banco principal que tenham o item referenciado let res = await wixData.queryReferenced('Continents', newSelection, "Articles"); if(res.items.length > 0) { let items = res.items; console.log(items) //mostrar os resultados do filtro no repetidor $w('#articlesList').data = items; } else { // handle case where no matching items found } }
Espero ter ajudado ;)