2017-04-02 12 views
1

Je souhaite imprimer la valeur d'un élément d'entrée dans la console à l'aide de la fonction de masquage.Knockout non fourni Valeur mise à jour à l'aide de la liaison de valeur

Lorsque j'essaie d'imprimer cette valeur, j'obtiens "résultat" au lieu de la valeur de la zone de texte.

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>

Répondre

1

Vous pouvez aussi le faire de cette façon. J'aime déclarer une fonction pour mon viewmodel afin que plus tard il puisse être utilisé pour initialiser un autre nouvel objet.

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>

+0

Merci cela a fonctionné. Pouvez-vous m'expliquer ce que je faisais de mal? – harry19

+0

Je crois que le problème vient du fait que lorsque vous appelez console.log (nom), le nom ne se réfère pas au même nom que vous avez déclaré. Et ceci peut être corrigé en faisant var self = this; et vous utilisez self.name pour vous assurer qu'il se réfère au bon nom d'objet – muhihsan

+0

pouvons-nous utiliser directement "this.name" à la place? – harry19