Reputation: 1699
I have a button which I want to bind to a method in the VM using knockout. I am using the following code
<button type="button" class="btn btn-primary" id="cmdCreateConnection"
data-bind="click: function(data, event) {
createConnection($('#connectuser').val(),
'param2', data, event)
}">Create connection
</button>
One of the parameters to the method are values entered into a textbox, hence the selector $('#connectuser').val()
.
However this does not work, any ideas?
Upvotes: 0
Views: 187
Reputation: 2303
By adding an id to your button declaration and by accessing the textbox value through JQuery, you're actually violating the main concept behind KnockoutJS and the two-way data binding concept. Instead, your button declaration should be something like:
<button type="button" class="btn btn-primary" data-bind="click: doSomething">Create connection</button>
And your textbox should be declared like:
<input type="text" data-bind="value: doSomethingParameter" />
In your ViewModel file, you must declare an observable "doSomethingParameter" and access its value through the function "doSomething":
self.doSomethingParameter = ko.observable();
self.doSomething= function () {
alert(self.doSomethingParameter());
};
Upvotes: 8