#bixby #bixbystudio
#биксби #bixbystudio
Вопрос:
Вопрос, касающийся Bixby Studio.
Я пытаюсь понять, как принимать ввод текста от пользователя.
У меня есть структура фильтра с некоторыми полями, такими как поле поиска, жанр, платформы (игровые консоли) и Темы (несколько других записей)
По умолчанию все это необязательно, особенно в случае с полем поиска. Однако я хотел бы, чтобы пользователь мог наглядно видеть, какие фильтры включены, и иметь возможность выбирать и изменять их значения (эти значения могут быть перезаписаны при обучении НЛП, но я не могу понять, как отключить это поле.)
Я создал представление результатов для своих фильтров и настроил ячейки ввода для выбора определенного поля для изменения. (В данном случае поле поиска.). Мне удалось перенаправить на представление ввода, но, похоже, что независимо от того, какой текст я ввел здесь, он не сохраняется и не применяется к моему фильтру.
Хотите получить некоторое представление о проблеме и готовы предоставить дополнительную информацию по мере необходимости.
Некоторые из вещей, которые я пробовал в прошлом, похоже, хотят использовать существующий контекст «searchField» в фильтрах (который может не существовать) и применить его к новому «полю поиска». Однако это не работает и, похоже, создает цикл.
Я также пытался установить prompt-behavior (AlwaysSelection)
в модели действий для SetSearchField, но, похоже, это ничего не дает.
// Result View for Filters
result-view {
match {
Filter(this)
}
message {
template (Active Filters){
speech (Would you like to change any filters?)
}
}
render {
layout-macro (filter-details) {
param (filter) {
expression (this)
}
}
}
}
// Layout Macro
layout-macro-def(filter-details) {
params {
param (filter) {
type (Filter)
min (Required)
max (One)
}
}
content {
section {
title (Filters)
content {
input-cell {
label (Search Name)
value ("#{value(filter.name)}")
on-click {
intent {
goal: SetSearchField // <-------- Field in question
}
}
}
}
}
}
}
// Input-view for SearchField
input-view {
match {
SearchField(searchField)
}
render {
form {
elements {
text-input {
id (val)
type (SearchField)
required (true)
}
}
on-submit {
goal:SearchField
}
}
}
}
// SetSearchField action
action (SetSearchField) {
description (Sets the name in a search filter)
type (Fetch)
collect {
input (newSearchField) {
type (SearchField)
min (Required)
prompt-behavior (AlwaysSelection)
}
}
output (SearchField)
}
// SetSearchField endpoint
action-endpoint (SetSearchField) {
accepted-inputs (newSearchField)
local-endpoint ("filters/SetSearchField.js")
}
// .js file
module.exports.function = function setName (newSearchField) {
return newSearchField
}
Ответ №1:
Я обнаружил, что существует особый способ доступа к элементам формы ввода для входных представлений.
Соберите входные данные через form
-> elements
, затем ссылайтесь на них с помощью viv.core.FormElement(id)
input-view {
match {
SearchField(searchField)
}
render {
form {
on-submit {
goal: SearchField
value: viv.core.FormElement(text)
}
elements {
text-input {
id (text)
type (SearchField)
label (Search for: )
value("#{raw(searchField)}")
}
}
}
}
}