2017-03-14 5 views
0

Wie wird der Wert der Variablen ko einem js-Objekt zugewiesen? Vorname, Name und Land sind beobachtbaren Variablenko beobachtbare Variable, die einer Variablen zugewiesen ist js

var ViewModel = function() { 
      var self=this; 
      self.name=ko.observable(); 
      self.surname=ko.observable(); 
      self.counrty=ko.observable(); 
     }; 
     ko.applyBindings(vm = new ViewModel()); 
function myFunction(){ 
           console.log(self.name); 
           console.log(self.surname); 
           console.log(self.country); 
           var tipo= { 
            name: self.nome, 
            surname: self.surname, 
            country: self.country, 
           }; 

           $.ajax({ 
            url : "", 
            type : "POST", 
            dataType : 'json', 
            contentType : "application/json", 
            data : JSON.stringify(tipo) 
           }).done(function(response) { 
            alert(response); 
            reloadKendoGrid($("#grid")); 
           }).error(function(jqXHR, textStatus, error){ 
            alert(error); 
           }); 
          } 

Jetzt funktioniert nicht! self.name, self.surname und self.country geben 'function c()' zurück.

Antwort

1

console.log(self.name());

ko.observable() erzeugt eine Funktion. Sie müssen es als Funktion aufrufen, um die Werte zu erhalten.

1

Verschieben Sie Ihre Methode in das Objekt.

JS:

var ViewModel = function() { 
    var self=this; 

    self.name=ko.observable(); 
    self.surname=ko.observable(); 
    self.country=ko.observable(); 

    self.toJSON = function() { 
     return { name: self.name(), surname: self.surname(), country: self.country() } 
    }; 

    self.Post = function() { 
     $.ajax({ 
      url : "", 
      type : "POST", 
      dataType : 'json', 
      contentType : "application/json", 
      data : self.toJSON(), 
     }).done(function(response) { 
      alert(response); 
      reloadKendoGrid($("#grid")); 
     }).error(function(jqXHR, textStatus, error){ 
      alert(error); 
     }); 
    } 
    return self; 
} 


ko.applyBindings(vm = new ViewModel()); 

HTML:

<a href="#" data-bind="click: Post"> 
+0

Es ist nicht sehr klar, diese Antwort für mich. dann, wie gebe ich die Daten an den Ajax-Aufruf? – Federico

+1

Ich habe die Antwort bearbeitet. – Shadowfox

Verwandte Themen