Как мне отобразить список наблюдаемых в 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».
Скриншот полного кода