1

我想在数据中显示一个值作为链接,并将自定义函数传递给它的点击事件(最终将显示一个带有状态历史记录的模式)。

我有属性“isLink”(布尔值)和“onClick”(函数),如下所示:

    { headerText: "ColumnName"
      , rowText: function (item) { return item.Product.ProductID.toString(); }
      , isLink: true
      , onClick: function (item) { alert(item.Product.ProductID.toString()); }
    }

在“ko_simpleGrid_grid”模板中,我有以下内容:

    ...
    <a data-bind=\"attr: { href: 'javascript:void()' }, click: $data.onClick, text: rowText($parent) \" />
    ...

单击时,警报为“未定义”。如果我放:

    ...
    , onClick: function () { alert("test"); }
    ...

然后警报显示“测试”。

所以我想我的问题是,如何从该函数访问数据?

编辑/更新

我能够让它工作。绑定文档的链接有所帮助。这是工作代码:

    ...
    , onClick: function() { alert(this.Product.ProductID.toString()); }
    ...

在 simpleGrid 插件中:

    ...
    <a data-bind=\"click: $data.onClick.bind($parent), text: rowText($parent) \" />
    ...

谢谢您的帮助!

4

1 回答 1

0

您必须使用 abind有效地将您想要的任何参数附加到函数调用。

在您的示例中,它应该按以下方式工作:

<a data-bind=\"click: $data.onClick.bind($data, param1), text: rowText($parent) \" />

绑定函数的第一个参数是“ onClick”函数中的上下文。我选择了“data”,这意味着在“onClick”中,$data 的所有属性都可用。

您可以根据需要添加任意数量的参数。

最后一点:我建议删除该href属性,它不是必需的,也不会在这里完成任何事情。

于 2013-04-25T16:51:41.763 回答