我想在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>
答案 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
。