【发布时间】:2014-02-04 22:45:22
【问题描述】:
我对以下有很大的疑问:假设我们分别有以下视图模型和视图
function TableViewModel() {
var self = this;
self.someObservableCollection = ko.observableArray();
self.doWorkWithObjectInCollection(collectionObject) {
/* Code to process the collectionObject */
}
}
ko.applyBindings(new TableViewModel());
视图是这样的(假设我们还运行了一个函数来获取集合的初始数据):
<table>
<thead> <!-- Table head here --> </thead>
<tbody data-bind="foreach: someObservableCollection">
<tr>
<td data-bind="text: property1"></td>
<td data-bind="text: property2"></td>
<!-- ... -->
<td><a data-bind="click: $parent.doWorkWithObjectInCollection">Do Work</a></td>
</tr>
</tbody>
</table>
现在,非常有趣的是,当单击 Do Work 链接时,函数doWorkWithObjectInCollection 被调用并且传递的参数是当前行中使用的对象。
Knockout如何知道我们要传递的参数是foreach循环中的当前对象?而在其他情况下,我怎么知道什么敲除将作为参数传递给在某个事件(如点击)上调用的函数?
【问题讨论】: