как настроить диалог в зависимости от значения свойства - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть одно представление Content, которое возвращает объекты из базы данных restdb Content, в которой есть поле, указывающее contenttype = news, fact, faq и т. Д. c.

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

message {

    switch (this.contenttype) {
      case (news)
      {

    if ($handsFree) {
          if (size(this) > 1)
            {
          template ("Latest headlines")
          {speech ("Latest headlines from #{value(this.identifier)}")}
        }
      else-if (size(this) == 1) 
      {template ("")
      {speech ("#{value(this.title)}. \n #{value(this.text)}")
        }}
        }
  else {
          if (size(this) > 1)
          {
          template ("Latest headlines")
          {speech ("Latest headlines from #{value(this.identifier)}")}
        }
      else-if (size(this) == 1) 
      {template ("")
      {speech ("#{value(this.title)}.")
        }}
  }
   }
    }
    switch (this.contenttype) {

       case (facts)
      {

    if ($handsFree) {        if (size(this) > 1)

            {
          template ("I found some facts")
          {speech ("Random facts from #{value(this.identifier)}")}
       }
      else-if (size(this) == 1) 
      {template ("")
       {speech ("#{value(this.title)}. \n #{value(this.text)}")
        }}
        }
  else {
          if (size(this) > 1)
           {
           template ("I found some facts")
           {speech ("Random facts from #{value(this.identifier)}")}
         }
       else-if (size(this) == 1) 
       {template ("")
      {speech ("#{value(this.title)}.")
         }}
 }
   }
    }
   }

Однако это не работает. Он возвращает системное диалоговое окно по умолчанию, возможно потому, что в операторе switch что-то не работает. Как можно это сделать?

1 Ответ

0 голосов
/ 12 февраля 2020

Проблема с кодом здесь - проверка значения (this.contenttype). Contenttype - это массив, поэтому не оценивается как значение свойства. Следующий код работает, просто просматривая значение свойства в первом элементе в массиве:

 message {

    switch (this.contenttype[0]) {
      case (news)
      {template ("news")}

       case ("facts")
      {
         if (size(this) > 1) {
      template ("I haz found facts")
    } else {
      template ("#{event(this, 'Result')}")
    }
      }

      default {template ("default is answer")
    } 

Это зависит от того, правильно ли сервер возвращает все элементы с тем же свойством, которое предусмотрено запросом.

...