KnockoutJs + DataTables服务器端绑定+ ButtonEvent

时间:2017-11-30 16:10:38

标签: datatables knockout-3.0 durandal-2.0

我有一个KnockoutJs和DataTables项目。所有数据都来自服务器端。

我的问题是这样的: 在一列中,我们有一个带有data-bind ="的按钮:click:someFunction" 显然这不会被调用,因为在加载网格之前页面已经绑定了。很公平。在表定义中,我覆盖了" fnDrawCallback"功能并添加此代码

 self.addButtonEventsToGridRow(self, $("#tableDomId #buttonId"));

,函数看起来像这样

        self.addButtonEventsToGridRow = function (model, element) {

            for (var i = 0; i < element.length; i++) {
                ko.cleanNode(element[i]);
                ko.applyBindings(model, element[i]);
            }
        };

我必须为每个按钮执行此操作。 (显然这本身就很难看)

 "<button type='button' id='buttonId' class='btn btn-primary btn-xs' data-bind='click: someFunction'>ButtonText</button>"

然而,现在事件发生了火灾。我可以证明这个

        self.someFunction = function(data) {
            console.log(data);
        }

这是问题所在。 &#34;数据&#34;传入的对象似乎是整个视图模型,而不是实际的行数据。

我认为我的解决方案本身就是失败,但我找不到合适的方法来实现这一目标。

我愿意修改我的解决方案,或者如果有人能指出我认为合适的方式,我会非常感激。

仅供参考,这是我在#34; render&#34;中解决此问题的UGLY解决方法。过度使用特定列。请注意,如果我

 "<button type='button' id='buttonId' class='btn btn-primary btn-xs' data-bind='click: function(){ return   someFunction(" + fulldata + ");}'>ButtonText</button>" +

0 个答案:

没有答案