【问题标题】:Knockout binding works in text attribute but throws undefined error when used in href敲除绑定在 text 属性中有效,但在 href 中使用时会引发未定义的错误
【发布时间】:2013-05-21 11:33:06
【问题描述】:

我在 foreach 绑定中有以下绑定:

<h5>Id: <span data-bind="text: ($root.link + id)"/></h5>

它显示正常。
如果我把它换成

<a data-bind="attr: { href: $root.link}"/>

锚导航正常(除非 id 显然没有附加到末尾)。
如果我添加id

<a data-bind="attr: { href: $root.link +id}"/>

我得到“无法解析绑定... id 未定义”。

为什么完全相同的绑定语法适用于 text 而不是 attr 绑定?

感谢您的帮助。

更新:我正在使用 Breezejs,它使用元数据创建 observableArray。我进行了更多测试,发现当字段类型为integer 时绑定失败。我传入了名称字段并且绑定工作正常。我也尝试了Id.toString(),但仍然得到 Id undefined 错误。如下所示,我正在考虑使用计算来解决问题。如果这是唯一的解决方案,我认为最好扩展微风实体,使其流经任何下游视图模型。

【问题讨论】:

  • 我不知道你遇到这个问题的具体原因,但我知道a 标记需要有一个结束标记:&lt;a&gt;&lt;/a&gt; 用作链接时。
  • 只是让你知道我有敲除的问题有一个像这样的跨度标签 没有明确的关闭标签。我不知道这是淘汰赛还是 html 问题,因为 标记无效,因为您应该像 Something 一样拥有它,仅供参考

标签: knockout.js breeze


【解决方案1】:

您需要一个名为 linkUrl 的计算 observable。

self.linkUrl = ko.computed(function(){ 返回 $root.link + id; });

http://knockoutjs.com/documentation/computedObservables.html

【讨论】:

  • 这有什么帮助? linkid 似乎无法观察到?
  • 他们不必是,他们只需要在他的模型中,他们显然是因为他们在 foreach 中。
猜你喜欢
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
  • 2015-11-14
  • 2015-05-26
  • 1970-01-01
  • 2012-12-06
  • 1970-01-01
  • 2013-06-14
相关资源
最近更新 更多