секвенирование (параллельное) Observables в Outwatch (или архивирование)

Как мне отобразить список наблюдаемых в Outwatch< /а>? Что, если мне нужен один Observable: как мне упорядочить/заархивировать их как аппликативный? Ожидается ли, что он будет отображаться, когда я использую аппликативную (?) операцию «zip» для преобразования List[Observable] в Observable[List]? (т.е. когда мне не нужны Observables для привязки)

val literals:Seq[Observable[VNode]] = handlers.map { i => i.map(li(_)) }
return div(ol( children <-- Observable.zip[VNode, Seq[VNode]](literals)(identity) ))

С одним ответом ниже

div(ol(
    (for (item <- literals) yield { child <-- item} ):_*))

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

Полный код следует

import outwatch.dom._
import rxscalajs.Observable
import scala.scalajs.js.JSApp

object Outwatchstarter extends JSApp {
  def createInputMappedToStringHandler(s:Handler[String]) = input(inputString --> s)
  
  def main(): Unit = {
    val root = {
      val names = (0 until 2).map(_.toString) // when 0 until 1, this emits
      val handlers: Seq[Handler[String]] = names.map(name => createStringHandler())
      val inputNodes = handlers.map(createInputMappedToStringHandler)
      val notworkingformorethan1 = {
        val literals = handlers.map { i => i.map(li(_)) }
        val y: Observable[Seq[VNode]] = Observable.zip[VNode, Seq[VNode]](literals)(identity)
        div(ol(
          children <-- y
        ))
      }
      val list = List("What", "Is", "Up?").map(s => li(s))
      val lists = Observable.just(list)
      val workingList = ul(children <-- lists)

      div(
        div(inputNodes: _*),
        workingList,
        notworkingformorethan1)
    }
    OutWatch.render("#app", root)
  }
}

Ничего не появляется, когда длина списка >1, но появляется со списком из одного элемента. Я новичок в html/scala-js и rx. И может быть непонимание того, как Observables могут (или не могут) быть аппликативными функторами. Я искал «последовательность», а не «zip».

Скриншот полного кода

скриншот из полного кода


person dcl04    schedule 04.01.2018    source источник


Ответы (1)


For-comprehension работает внутри OutWatch DOM DSL

div(ol(
    (for (item <- literals) yield { child <-- item} ):_*))
person dcl04    schedule 04.01.2018