1

I have 3 Observable Arrays:

self.sets1 = ko.observableArray([
    ]);
self.sets2 = ko.observableArray([
    ]);
self.sets3 = ko.observableArray([
    ]);

I have a constructor to make new records.

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

}

I have a function that adds records to one of my observable arrays. Like so:

this.addSet = function(){
        self.sets1.push(new Record($('input[id=weight1]').val()+' x '+$('input[id=reps1]').val()));
    };

And in my view I call it like this:

<button id="btn1" data-bind="click: addSet">Add set</button>

But this is only for observable array sets1.

What I want is to make this function universal, so it could add records to any array, for example depending of the id of the button which is clicked. But how can I get the needed id and pass this value to my function? Or maybe there's a better solution?

Thanks.

1 Answer 1

1

Knockout event bindings (like click) are provided two parameters that you may find useful.

function(data, event)

Here, data is the knockout object associated with the element that raised the event. event is the event object which contains data about the event. event.target is a reference to the html element that raised the event.

So to find the ID of the button that was clicked, do something like this:

this.addSet = function(record, event){
    var id = $(event.target).attr('id');
    ...
};
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.