如何从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,为您进行查找.