Я пытаюсь передать свойство, которое находится внутри первой позиции массива объектов, другому модулю, чтобы я мог использовать это значение позже. Я пытался передать его как модуль (аргументы), но он продолжает читать значение по умолчанию, равное 0. Есть ли способ сделать это?
Я пытался реализовать некоторые React.context, но эмулятор платформы Bot отказывается от этого.
/////////////////Module that ll acquire the value/////////////////////////////
getCard(bot, builder, params) {
let configValues = { ...params[0] }
bot.dialog(`${configValues.path}`, function (session) {
var msg = new builder.Message(session);
const cardItem = (obj) => {
return (new builder.HeroCard(session)
.title(`${obj.title}`)
.text(`R$ ${obj.price}`)
.images([builder.CardImage.create(session, `${obj.img}`)])
.buttons([
builder.CardAction.imBack(session, `${obj.price} Item adicionado!`, 'add to cart')
// !onClick event must add the current obj.price to
// the configValues.total(Ex: configValues.total += obj.price)!
])
)
}
msg.attachmentLayout(builder.AttachmentLayout.carousel)
msg.attachments(
eval(params.map(obj => cardItem(obj)))
);
//!in here before end the dialog is where i want to update
// the configValues.total so i can show it in the -> Checkout module
session.send(msg).endDialog()
}).triggerAction({ matches: configValues.regex });
}
}
//////////////CheckOut.Module///////////////////////////////
{...}
let configValues = { ...params[0] }
let state = {
nome: "",
endereco: "",
pagamento: "",
total: configValues.total // this is the value to be read
}
bot.dialog('/intent', [
{...},
(session, results) => {
state.pagamento = results.response
session.send(
JSON.stringify(state) // here is the place to be printed
)
{...}
]
).triggerAction({ matches: /^(finalizar|checar|encerrar|confirmar pedido|terminar)/i })
Чем большим количеством кода вы можете поделиться, тем лучше. Я действительно не вижу, как вызывается ваш модуль CheckOut или как большая часть кода взаимодействует друг с другом.
Я решил часть проблемы с совершенно другой стратегией. Теперь значение действительно передается, но для этого мне пришлось создать еще один bot.dialog() на основе совпадения, запущенного postBack(), в котором этот Сохраню заданное значение, полученное с помощью results.response, в bot.dialog() и вставлю его в массив цен, а затем подсчитаю итог из одного cardBox, но новая проблема состоит в том, чтобы суммировать итог из всех CardBox которые были нажаты [GitHub] (github.com/VyTorBrB/botTalk)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Поскольку вы решили свою первоначальную проблему, я отвечу на ту, что в вашем комментарии.
Ваша проблема здесь:
cartId.map((obj, i , arr) => {
// if (!obj.total) {
// obj.total.reduce(i => i += i)
// }
const newtotal = new total
newtotal.getTotals(bot, builder, obj, arr)
})
cartId содержит итоги для каждого из ваших предметов. Когда вы вызываете map, вы передаете каждый элемент по отдельности в getTotals, который передает каждый элемент в checkout()
Причина, по которой вы не можете суммировать все итоги и можете суммировать только один элемент, заключается в том, что вы передаете cartId в checkout, а cartId заменяется только одним элементом. Вместо этого вы можете сделать несколько разных вещей:
Передайте все cartId из cartItems и используйте что-то вроде for (var key in cartItems) в totalConstructor() и checkoutConstructor(). Это, вероятно, самый простой, но не очень эффективный метод памяти.
Используйте Хранилище состояний BotBuilder, чтобы сохранить массив totals в userData, а затем просуммируйте его в конце. Это может быть сложнее реализовать, но это будет гораздо лучший путь. Вот образец, которые помогут вам начать работу.
Можете ли вы уточнить, что происходит? Где устанавливается значение по умолчанию? Где возникает ошибка? Какую ошибку выдает эмулятор?