javascript - Knockout JS 如何知道要传递的正确参数?

标签 javascript knockout.js

我对以下内容有很大疑问:假设我们分别有以下 View 模型和 View

function TableViewModel() {
    var self = this;

    self.someObservableCollection = ko.observableArray();

    self.doWorkWithObjectInCollection(collectionObject) {
        /* Code to process the collectionObject */
    }
}

ko.applyBindings(new TableViewModel());

View 就像这样(假设我们还运行了一个函数来获取集合的初始数据):

<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循环中的当前对象?在其他情况下,我如何知道什么 knockout 将作为参数传递给在某些事件(例如单击)上调用的函数?

最佳答案

Knockout 不知道您想要传递集合中的对象,它在文档中告诉您它将执行此操作。您无法直接影响此行为。

请参阅 http://knockoutjs.com/documentation/click-binding.html 处的“注释 1”

关于javascript - Knockout JS 如何知道要传递的正确参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21554741/

相关文章:

knockout.js - jquery datepicker的knockout绑定(bind),alternate字段应该是天名

javascript - div 重新加载后 jQuery 不工作

javascript - 为什么 Closure Compiler 无法识别自执行匿名函数中的类型声明?

javascript - jquery中通过循环获取值

javascript - 如何调整 twitter bootstrap popover 的大小?

javascript - 从嵌套数据结构中删除元素

javascript - AngularJS - 使用 angularjs 拖放列表库时没有在 html 页面中获取任何内容

javascript - 有什么方法可以在没有查询字符串的情况下获取 URL?

knockout.js - 通过 knockout 的规范方法计算了 CoffeeScript 中正确的可观察值

javascript - knockout 嵌套组件