Knockout - 在observableArray上按索引访问元素

时间:2015-07-06 14:53:21

标签: knockout.js knockout-2.0

我有一个foreach的视图,我需要创建一个连接两个字段的计算字段,但这两个字段在一个可观察的数组中,我知道我可以用这种方式引用我的项目:myArray()[0] .firstName + myArray()[0] .lastName但因为我在foreach中,我需要知道索引:

假设这是我的计算字段:

fullName: ko.computed(function(idx) {
     return myArray()[idx].firstName + ' ' + myArray()[idx].lastName;
})

如果我以前的代码是可能的,我如何在我的淘汰赛foreach中获取索引,将其发送到此计算字段并获取fullName?

现在我有另一个问题,

employeeList: ko.observableArray(),

employeeFullName: ko.computed(function(idx) {
   return employeeList()[idx].firstName + ' ' + employeeList()[idx].lastName;
})

问题是我在页面上有一个错误,说明没有定义employeeList。

1 个答案:

答案 0 :(得分:1)

您的employeeFullName计算的observable需要是一个函数:

employeeFullName: function(idx) {
     return this.employeeList()[idx].firstName + ' ' + this.employeeList()[idx].lastName;
}

如果employeeFullNameemployeeList都在同一个视图模型中,那么您可以通过employeeFullName上下文访问$parent。此外,您将使用$index传递当前索引。例如,这是一个带有绑定的简单列表:

<ul data-bind="foreach: employeeList">
    <li data-bind="html: $parent.employeeFullName($index())"></li>
</ul>

注意()之后的$index;这很重要。