尝试使用KOGrid在节点js网格中创建onclick事件

时间:2012-11-27 15:54:22

标签: node.js knockout.js grid kogrid

我想在HTML页面中有一个很好的交互式网格视图。我正在使用nodejs,express,twitterbootstrap,knockoutjs,用于我的技术堆栈。我正在尝试使用KOGrid显示各种数据点,其中包含一些很好的内置列排序和其他网格功能。

我的问题是尝试在连续单击按钮时触发事件。并传递给该事件,来自该特定行的一些各种数据字段。所以在KOGrid细节中,我使用的是cellTemplates,我需要在onclick事件中调用一些函数,但是传递一些KOGRID数据有限值的函数。所以,在我的输入元素中我会有 data-bind =“onclick:[我的函数名称]([某些数据有界变量的名称],[某些其他数据有界变量的名称])

有人可以告诉我该怎么做吗?

以下是我的代码示例... CBTemplate中的输入/ onclick是我遇到问题的地方。

CBTEMPLATE:

<script type="text/html" id="actionTemplate">
<div data-bind="kgCell: $cell">
<input type="checkbox" value="1" class="checkbox" checked="checked" data-bind="onclick: 'MyOnClickFunction( siteId(), status() )'"/>
</div>
</script>

DIV TAG:

<div data-bind="koGrid: { data: offer.siteCounts,
                    columnDefs: [ { field: 'templateField0', displayName: 'Site', cellTemplate: 'siteTemplate', width: 150},
                                 { field: 'status', displayName: 'Current Status', cellClass: 'site', cellTemplate: 'statusTemplate', width: 115},
                                 { field: 'details', displayName: 'Details', width: 175},
                                 { field: 'actionField0', displayName: 'Action', cellTemplate: 'cbTemplate', width: 200}],
                    autogenerateColumns: false,
                    displaySelectionCheckbox: false,
                    isMultiSelect: false }">
</div>

1 个答案:

答案 0 :(得分:1)

使用KO click event binding应如下所示:

data-bind="click: function(data,event) { MyOnClickFunction(siteId(), status()) }"

这是working JSFiddle,你可以在其中玩。

一些旁注:

  • 在我的示例中,我使用了$root binding context property来访问示例函数:$root.offer.MyOnClickFunction。您需要根据您在视图模型上定义MyOnClickFunction的级别来调整此值。

  • 如果您确实希望让默认点击操作继续进行(例如选中复选框等),则需要来自点击装订处理程序的return true