我有3个Observable Arrays:
self.sets1 = ko.observableArray([
]);
self.sets2 = ko.observableArray([
]);
self.sets3 = ko.observableArray([
]);
我有一个构造函数来创建新记录。
function Record(name1){
var self = this;
self.name = ko.observable(name1);
this.editing = ko.observable(false);
this.edit = function() { this.editing(true) }
self.remove = function(){
self.remove(this);
}
}
我有一个函数可以将记录添加到我的一个可观察数组中。 像这样:
this.addSet = function(){
self.sets1.push(new Record($('input[id=weight1]').val()+' x '+$('input[id=reps1]').val()));
};
在我看来,我称之为:
<button id="btn1" data-bind="click: addSet">Add set</button>
但这仅适用于可观察数组sets1
。
我想要的是使这个函数具有通用性,因此它可以向任何数组添加记录,例如,取决于被点击的id
的{{1}}。
但是如何获得所需的button
并将此值传递给我的函数?
或者可能有更好的解决方案?
感谢。
答案 0 :(得分:1)
Knockout event bindings(如点击)提供了两个您可能会觉得有用的参数。
function(data, event)
此处,data
是与引发事件的元素关联的knockout对象。 event
是包含有关事件的数据的事件对象。 event.target
是对引发事件的html元素的引用。
因此,要查找单击按钮的ID,请执行以下操作:
this.addSet = function(record, event){
var id = $(event.target).attr('id');
...
};