Knockout绑定在text属性中工作,但在href中使用时会抛出未定义的错误

时间:2013-05-21 01:14:17

标签: knockout.js breeze

我在 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未定义'。

为什么完全相同的绑定语法适用于文本但不适用于attr绑定?

感谢您的帮助。

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

1 个答案:

答案 0 :(得分:0)

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

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

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