Knockoutjs复杂绑定组合选择表

时间:2012-12-13 01:40:43

标签: javascript json knockout.js knockout-2.0

我有一个表格,用于添加新的预算明细,如下图所示:

enter image description here

当我选择一个收入帐户时,另一行将添加到viewmodel集合中:

enter image description here

我想在添加新行时将所有字段值设置为“0.00”并且我也有问题,因为如果我删除了一行,那么“更改“组合事件不存在,因此在更改最后一个组合时无法添加新行。

有任何线索吗?以下是小提琴工作样本:http://jsfiddle.net/rLUyS/9/

以下是我用来将更改操作绑定到最后添加的组合的代码:

$('select[name=cboincomeaccount_' + newRowIndex + ']').bind("change", {
    combo: $(this)
}, handler);

function handler(event) {

    newRowIndex++;
    var combo = jQuery(this);
    var row = combo.parent().parent();

    appViewModel.addRow();

    // Unbind
    combo.unbind('change');
    // Bind new combo
    jQuery('select[name=cboincomeaccount_' + newRowIndex + ']').bind("change", {
        combo: jQuery(this)
    }, handler)

    jQuery(row).find('input[name^="txtincmonth"]').removeAttr('disabled');    
};

提前致谢!!

1 个答案:

答案 0 :(得分:0)

这可能不是Knockout问题,因为它是用户界面问题。

  

我想将所有字段值设置为" 0.00"何时添加新行

嗯,这很容易。只需将可观察行初始化为全零。

  

当我选择一个收入帐户时,另一行被添加到viewmodel集合中......   而且我有一个问题,因为如果我删除一行,那么"更改"组合事件不存在,因此在更改最后一个组合时无法添加新行。

这可能是一个可以谈判的要求。

为什么不创建一个'添加'按钮而不是坚持这个" nifty"当用户在下拉列表中创建一个部分时添加一行的行为?

此外,即使我们能够完成你所要求的(我可以设想我们可以做到这一点的方式),当你需要时间来保存用户时,你会做什么? s输入到服务器?你是否计划忽略最后一个空行?