【发布时间】:2012-11-30 20:35:11
【问题描述】:
我有一个用于添加新预算详细信息的表格,如下图所示:
当我选择一个收入帐户时,视图模型集合中会添加另一行:
我想在添加新行时将所有字段值设置为“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');
};
提前致谢!!
【问题讨论】:
-
有什么理由不使用 Knockout 以声明方式绑定更改事件?例如。 这样它总是存在并连接起来,并且在处理程序中,您可以根据它是新行还是更改行来应用逻辑.
-
你的新行有空输入的原因是因为在你的 addRow 函数中,你正在做
self.budgetDetails.push(new BudgetDetail(bDetails)),传递 bDetails array 而不是里面的对象。所以将 bDetails 更改为 bDetails[0],在这个例子中 -
@TomHall 你有任何关于如何在 databint 声明中设置事件更改的示例吗?
-
您知道如何计算总数,以便将所有 1、2、3、4 等连续相加吗?谢谢
-
@VAAA 绑定类似于: (为了清楚起见省略了选项等)和视图上的处理程序模型就像: self.changeIt = function(data, event) { ... });其中 data 是当前的数据绑定上下文。或者,您可以将选定的值设置为可观察的值,例如 knockoutjs.com/examples/controlTypes.html,然后订阅它而不是使用更改处理程序。
标签: javascript json knockout.js knockout-2.0