Биксби: хочу отобразить два элемента ввода текста в одном виде формы ввода - PullRequest
0 голосов
/ 29 апреля 2020

Я хочу построить форму ввода, используя ввод текста, в котором я хочу отобразить несколько текстовых полей в одной форме. Создание одного представления с несколькими текстовыми полями, не обеспечивающими вывод.

Итак, возможно ли написать несколько текстовых вводов в одной форме или нет.

Ниже приведен мой код, которым я являюсь пытается реализовать:

Действие:

action (CardDetails) {   
  type(Search)    
  collect{  
    input (creditCard) {  
      type (CreditCard)  
      min (Required)   
    }   
    input (cvv) {  
      type (Cvv)  
      min (Required)  
    }  
  }  
 output (getCardInfo)  
}

Структура:

structure (getCardInfo){
  property (creditCard) {
    type (CreditCard)
    min (Optional)
  }
  property (cvv) {
    type (Cvv)
    min (Optional)
  }
}

Вид ввода:

input-view {
  match {
   CreditCard (creditCard) { 
     to-input: CardDetails
   }
 }
 message {
   template ("Enter Card Details")
 }
 render {
   form {
     elements {
       text-input {
         id (creditCard)
         label (Credit Card)
         type (CreditCard)
         max-length (20)
         value ("#{raw(creditCard)}")
       }
       text-input {
         id (cvv)
         label (cvv)
         type (Cvv)
         max-length (4)
       }
     }
     on-submit {
       goal: CardDetails
       value: viv.core.FormElement(creditCard)
       value: viv.core.FormElement(cvv)
     }
     submit-button (Ok)
  }
 }
}

Вид результата:

result-view {
  match: getCardInfo(res){
    from-output : CardDetails
  }
  message{
     template ("Here are the details")
  }
}

Невозможно отобразить представление результатов. Показывая, что мне нужны подробности CVV для продолжения.

Если вам нужна помощь, пожалуйста,

1 Ответ

2 голосов
/ 29 апреля 2020

Я уверен, что есть и другие способы, но самый простой способ, который я мог бы придумать, это сделать входной просмотр структуры. Также это может быть только личный стиль, но я бы порекомендовал изменить название, действия должны начинаться с чего-то вроде Get или Create , а не имени структуры.

input-view {
  match: StructCard(this) 
  message: template ("Give me your card") 
  render {
    form {
      elements {
        text-input {
          id (aaa) 
          label("Card Number")
          type (TextCardNumber)
          value("Costco Citi")
        }
        text-input {
          id (bbb) 
          label("Card CVV")
          type (TextCardCvv)
          value("No WAY")
        }
      }
      on-submit {
        goal: StructCard
        value: StructCard {
          cardNumber: viv.core.FormElement(aaa)
          cardCvv: viv.core.FormElement(bbb)
        }
      }
    }
  }
}

Существуют и другие незначительные, но незначительные изменения в действии, проверьте полный пример на GitHub . Выражение "скажи мне свою карту".

Вот представление ввода enter image description here

Вот представление результата enter image description here

...