使用KnockoutJS模板绑定jQuery UI确认对话框

时间:2011-04-07 16:01:04

标签: jquery jquery-ui knockout.js

如何使用jQuery UI对话框确认是否要从KnockoutJS模板中的列表中删除行?

在我看来,Knockout演示显示了一个模板,用于渲染网格中的每一行。 删除按钮调用传递要删除的行的对象的viewModel.remove()函数。在remove()函数内部,调用this.Gifts.Remove()并将数据作为参数传递给函数。

我的问题是我想显示一个jQuery对话框,要求确认是否应该删除一行。 JQuery对话框基于设置功能工作,该功能预先设置对话框及其删除功能。

当我点击模板中的删除链接时,它会打开对话框确定,但是如何将模板数据传递到对话框删除功能,因为它现在与模板机制完全分离?

1 个答案:

答案 0 :(得分:20)

我假设对话框来自jQuery UI。如果是这样,那么你的删除会看起来像这样:

removeItem: function(item) {
    $( "#dialog-confirm" ).dialog({
        resizable: false,
        height:140,
        modal: true,
        buttons: {
            "Delete item": function() {
                $(this).dialog("close");
                viewModel.items.remove(item);
            },
            Cancel: function() {
                $(this).dialog("close");
            }
        }
    });
}

因此,“删除项目”按钮将关闭对话框,并从observableArray中删除您的项目。

此处的工作示例:http://jsfiddle.net/rniemeyer/CLxsV/

编辑:使用绑定更好的示例:http://jsfiddle.net/rniemeyer/WpnTU/