首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么没有重新评估Binding.scala路由器?

为什么没有重新评估Binding.scala路由器?
EN

Stack Overflow用户
提问于 2017-11-23 17:17:09
回答 0查看 342关注 0票数 2

我正在尝试为Binding.scala的一个个人项目构建一个通用路由器。

我已经定义了一个PageState特征

代码语言:javascript
复制
sealed trait WhistState {
  def text: String
  def hash: String

  def render: Binding[Node]
}

每种路由类型都有多个子类。然后,我尝试创建一个路由器,它根据散列选择正确的类。

代码语言:javascript
复制
object Router {

  val defaultState: WhistState = DefaultState("Games")

  val allStates: Vector[WhistState] = Vector(defaultState)


  val route: Route.Hash[WhistState] = Route.Hash[WhistState](defaultState)(new Route.Format[WhistState] {

    override def unapply(hashText: String): Option[WhistState] = allStates.find(_.hash == window.location.hash)
    override def apply(state: WhistState): String = state.hash

  })

  route.watch()

}

然后我是我的应用程序类,我试着使用这个

代码语言:javascript
复制
object Application {
  import example.route.Router._

  @dom
  def render: Binding[Node] = {
    for (hash <- route.state.bind.hash) yield println("hash: " + hash)

    route.state.bind match {
      case default: WhistState => println("default"); default.render.bind
      case _                   => println("none");    <div>NotFound</div>
    }
  }

  def main(args: Array[String]): Unit = {
    dom.render(document.querySelector("#content"), render)
  }

}

我已经预料到更改散列将强制重新计算route.state.bind match ...表达式。

你知道为什么这个不起作用吗?

诚挚的问候

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47451630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档