1

我有 3 个可观察数组:

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>

但这仅适用于 observable array sets1

我想要的是使这个函数通用,所以它可以将记录添加到任何数组中,例如取决于被点击id的那个。button但是我怎样才能得到需要的id并将这个值传递给我的函数呢?或者也许有更好的解决方案?

谢谢。

4

1 回答 1

1

Knockout 事件绑定(如 click)提供了两个您可能会发现有用的参数。

function(data, event)

这里,data是与引发事件的元素关联的淘汰对象。event是包含有关事件的数据的事件对象。event.target是对引发事件的 html 元素的引用。

因此,要找到被点击按钮的 ID,请执行以下操作:

this.addSet = function(record, event){
    var id = $(event.target).attr('id');
    ...
};
于 2013-10-30T17:17:19.483 回答