2

如何从 KnockoutJS foreach 中的函数绑定数据?

例如,我有以下代码:

 <div data-bind="foreach: timeEntries">
     <a href="#page1" data-icon="refresh" data-theme="c">
         <span data-bind="text: getActivityName(ActivityId)"></span>
     </a>

我想调用模型上下文中存在的函数 getActivityName,并传递 ActivityId,它是 foreach 迭代的 timeEntry 上的一个属性。

只是绑定这个

data-bind="text: ActivityId"

将正确显示每一行的活动 ID,但我需要进行查找并从字典中获取名称。我确实知道上面的代码很可能在当前项目而不是上下文上调用 getactivityname,那么我该如何解决呢?

4

1 回答 1

6

foreach 绑定创建一个新的绑定上下文(它允许您直接绑定到循环中项目的属性。如果您想从视图模型而不是循环引用属性,您可以使用 $root 或 $parent 绑定。

<span data-bind="text: $root.getActivityName(ActivityId)"></span>

getActivityName 函数可以为您进行查找。

另一种选择是使在 foreach 中迭代的对象可观察,并创建一个计算的可观察对象来为您进行查找。

于 2012-08-17T08:11:36.923 回答