首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Binding.scala中使用模式匹配?

如何在Binding.scala中使用模式匹配?
EN

Stack Overflow用户
提问于 2017-06-25 01:03:35
回答 1查看 137关注 0票数 0

我有以下模型:

代码语言:javascript
复制
case class CarBinding(ownerId: Var[String], specs: Var[Option[Specs]])

Specs是一个特征,具有以下具体类型:

代码语言:javascript
复制
trait Specs {

    def name: String

}

case class SportsCarSpecs(name: String, details: Details) extends Specs

在我的Scala.js应用程序中,我现在想创建一个表并列出所有条目:

代码语言:javascript
复制
@dom
  def buildTable(): Binding[BindingSeq[Node]] = {
    val data = Vars.empty[CarBinding]
    /* Initial population. */
    // Some code...
      <br/>
        <table class="table table-bordered table-hover">
          <thead>
            <tr>
              <th class="col-md-1">
                <small>Owner ID</small>
              </th>
              <th class="col-md-1">
                <small>Specs</small>
              </th>
            </tr>
          </thead>
          <tbody>
            {for (entry <- data) yield {
            <tr>
              <td>
                <small>
                  {entry.ownerId.bind}
                </small>
              </td>
              <td>
                <small>
                  {entry.specs.bind match {
                  case Some(SportsCarSpecs(name, details)) => {name} <span>{details.ps}</span>
                  case _ => -
                }}
                </small>
              </td>
            </tr>
          }}
          </tbody>
        </table>
      </div>
  }

但是,我得到以下错误:

代码语言:javascript
复制
 ';' expected but $XMLSTART$< found.
[error]                   case Some(SportsCarSpecs(name, details)) => {name} <span>{details.ps}</span>

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-25 04:24:04

这一点:

代码语言:javascript
复制
entry.specs.bind match {
  case Some(SportsCarSpecs(name, details)) => {name} <span>{details.ps}</span>
  case _ => -
}

不是有效的表达式,所以不能在XML文本中插入它。如果在两个分支中都有完整的XML表达式,那么它应该可以工作。所以我能看到的最简单的解决方法就是把<small>拉进去:

代码语言:javascript
复制
          <td>
            {entry.specs.bind match {
              case Some(SportsCarSpecs(name, details)) => <small>{name} <span>{details.ps}</span></small>
              case _ => <small>-</small>
            }}
          </td>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44738869

复制
相关文章

相似问题

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