user5005797
user5005797

Reputation:

Knockout not providing Updated value using value binding

I want to print the value of an input element in console using knockout.

When I try to print that value I am getting "result" instead of the value of the textbox.

var ViewModel = {
   name: ko.observable("name"),
   company: ko.observable("company"),
   submit: ko.observable("Submit"),
   onsubmit: function(){
      console.log(name);
   }
}

ko.applyBindings(ViewModel);
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>

<form>
   <label>Name</label>
   <input type="text" data-bind="value:name"/>
   <label>Company</label>
   <input type="text" data-bind="value:company"/>
   <button data-bind="click:onsubmit,text:submit"></button>
</form>

Upvotes: 1

Views: 89

Answers (1)

muhihsan
muhihsan

Reputation: 2350

You can also do it this way. I like to declare a function for my viewmodel so that later it can be used to initialize another new object.

var ViewModel = function() {
  var self = this;
  self.name = ko.observable("name");
  self.company = ko.observable("company");
  self.submit = ko.observable("Submit");
  self.onsubmit = function(){
   alert(self.name())
   console.log(self.name());
  };
}
ko.applyBindings(new ViewModel());
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

<label>Name</label>
<input type="text" data-bind="value: name"/>
<label>Company</label>
<input type="text" data-bind="value: company"/>
<button data-bind="click: onsubmit, text: submit"></button>

Upvotes: 1

Related Questions