KnockoutJS foreach data-bind to function?

Rog*_*son 2 knockout.js

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

例如,我有以下代码:

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

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

只是绑定这个

data-bind="text: ActivityId"
Run Code Online (Sandbox Code Playgroud)

将正确显示每行的活动ID,但我需要进行查找并从字典中获取名称.我确实得到上面的代码最有可能调用当前项目的getactivityname而不是上下文,所以我该如何解决它?

小智 6

在foreach结合创建一个新的BindingContext(它允许你直接绑定到上环的项目属性.如果你想从视图模型,而不是循环引用的一个属性,你可以使用$根或$父绑定.

<span data-bind="text: $root.getActivityName(ActivityId)"></span>
Run Code Online (Sandbox Code Playgroud)

getActivityName函数可以为您查找.

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