function ViewModel() {
var self = this;
self.products = ko.observableArray([{
pname: '', //Declare props. without values ??
qty: ''
}]);
}
该表由observableArray绑定。
单击edit
将填充相应文本框中的行值。单击update
将使用修改后的值更新阵列。
一切正常。就是这样,首先创建一个空行(参见小提琴)。这是因为
pname: '',qty: ''
那么,如何避免这种情况,以便表格只能包含已定义的“产品”,而不是空行。
我正在使用jquery来点击“编辑”获取行索引。如何用KO来解决这个问题。
答案 0 :(得分:3)
您不需要创建第一个对象,除非您希望它在列表中。简单地省略它允许您创建没有对象的数组,然后您的其他对象将被添加到数组中。
function ViewModel() {
var self = this;
self.products = ko.observableArray(); // products is an empty observable Array
}
您可能遇到的错误是因为下面是您绑定到selected().pname
,但selected()
最初未定义。您可以将该块包装在虚拟if
绑定中,以便在选择项目之前将其删除。
编辑,错过了第二个问题:
要获取项目的索引,您可以使用ko.contextFor
:
self.select = function(item, event){
var context = ko.contextFor(event.target);
alert('the ID is: ' + context.$index());
self.selected(item);
}