1

私は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);
    }

}

監視可能な配列の 1 つにレコードを追加する関数があります。そのようです:

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に応じて、任意の配列にレコードを追加できます。buttonしかし、必要なものを取得してidこの値を関数に渡すにはどうすればよいでしょうか? それとも、より良い解決策がありますか?

ありがとう。

4

1 に答える 1

1

ノックアウト イベント バインディング(クリックなど) には、便利な 2 つのパラメーターが用意されています。

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 に答える