【问题标题】:Binding.scala - how to get updating count from VarsBinding.scala - 如何从 Vars 获取更新计数
【发布时间】:2021-01-14 02:26:57
【问题描述】:

我有一个Vars 绑定语句,就像这样

val data: Vars[Contact] = Vars.empty[Contact]

我正在尝试显示元素的数量,如下所示:

<div>{data.all.bind.size}</div>

但这会产生一个复杂的错误

type mismatch;
[error]  found   : com.thoughtworks.binding.Binding[App.this.data.All[App.this.Contact]]
[error]     (which expands to)  com.thoughtworks.binding.Binding[scala.collection.mutable.Buffer[_ <: App.this.Contact]]
[error]  required: com.thoughtworks.binding.Binding[scala.collection.mutable.Buffer[_$6]] where type _$6 <: App.this.Contact
[error]         {this.data.all.bind.size}</div>

如何做到这一点?

更新

尝试使用String 作为Vars 绑定的类型,结果相同

type mismatch;
[error]  found   : com.thoughtworks.binding.Binding[App.this.data.All[String]]
[error]     (which expands to)  com.thoughtworks.binding.Binding[scala.collection.mutable.Buffer[_ <: String]]
[error]  required: com.thoughtworks.binding.Binding[scala.collection.mutable.Buffer[_$6]] where type _$6 <: String
[error]         {this.data.all.bind.size}</div>

请注意,我使用的是 Scala.js 1.2、Scala 2.13.3 和 libraryDependencies += "org.lrng.binding" %%% "html" % "latest.release" 不幸的是,无法提供 scalafiddle,因为它不支持 Scala 2.13,而是我在这里创建了一个副本项目- https://www.dropbox.com/s/i9dpsa9pz0lejtj/bindingreplica.tar.gz?dl=0

【问题讨论】:

  • 您能提供Contact 的描述吗?或者请通过将Contact 替换为String 来简化示例并检查结果。我检查了Vars.all.bind.size 绑定和更合适的Vars.length.bind,两者都有效(请参阅此处scalafiddle.io/sf/IL27nGa/1)。
  • 不,同样的结果```类型不匹配; [错误] 发现:com.thoughtworks.binding.Binding[App.this.data.All[String]] [错误](扩展为)com.thoughtworks.binding.Binding[scala.collection.mutable.Buffer[_ ``` 请注意,我正在使用 Scala.js 1.2、scala 2.13.3 和 libraryDependencies += "org.lrng.binding" %%% "html" % "latest.release",不幸的是,不能使用 scalafiddle,因为它不支持 Scala 2.13
  • Vars.all.bind 中的打字问题现已在 github.com/ThoughtWorksInc/Binding.scala/pull/302 中修复

标签: scala binding.scala


【解决方案1】:

您可以为此使用length

<div>{data.length.bind.toString}</div>

【讨论】:

  • 这以不同的方式失败- [错误] .../src/main/scala/jstextplayground/app/App.scala:53:27: 找不到参数 bindableSeq: com 的隐式值.thoughtworks.binding.bindable.BindableSeq.Lt[Int,org.scalajs.dom.Node](找不到 Int 的 BindableSeq 实例)[错误] {this.data.length.bind}
    [错误] ^ [error] 发现一个错误[error] (jstestgroundJS / Compile / compileIncremental) 编译失败[error] 总时间: 7 s, 完成 17 Oct 2020, 16:59:26
  • 我想我需要基本的“all.bind”才能工作,但这无法编译..
  • 请在this.data.length.bind之后添加toString
  • 我在我的问题中附加了一个示例项目,您可以在那里重现编译问题
  • 我已经下载了你的示例项目。如果您在示例项目中将this.data.all.bind.size 替换为this.data.length.bind.toString,则编译不会出错。请仔细检查我的回答。
  • 猜你喜欢
    • 2014-09-25
    • 2012-08-31
    • 2018-08-05
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 2021-04-02
    • 1970-01-01
    • 2011-07-23
    相关资源
    最近更新 更多