2016-06-27 5 views
0

Ich habe Probleme beim Zugriff auf Daten von HTML.Wie KnockoutJS Observables zu Konsole drucken?

Wie es funktioniert: Der Benutzer wird eine Optionsschaltfläche auswählen und der Code aus den KnockoutJS-Observablen wird "Data-bind =" text: radioFrom "mit dem Wert des ausgewählten Optionsfelds aktualisieren. Ich möchte die Zeichenfolge ausdrucken gespeichert in der Variablen "data-bind =" text: radioFrom "an die Konsole.

Ich habe versucht, dies zu tun, aber ich bekomme immer Fehler oder, häufiger, gibt es nur die Variable als "undefined". Wie kann ich dies auf der Konsole (oder in einer Warnung) drucken?

Meine Versuche

--------------------------------------------------- 
var jsonRadioFrom = JSON.stringify(self.radioFrom);   
console.log(jsonRadioFrom); 
--------------------------------------------------- 
console.log(self.radioFrom) 
--------------------------------------------------- 
console.log(self.radioFrom.name) 
--------------------------------------------------- 

Dies sind die Radio-Buttons

<td class="label">From:</td> 
<td> 
    <label><input type="radio" value="Dev1" data-bind="checked: radioFrom" />Dev [devName1]</label> 
    <label><input type="radio" value="Dev2" data-bind="checked: radioFrom" />Dev2 [devName2]</label> 
</td> 

Dies hält den Wert des ausgewählten Radiobutton

<tr> 
    <td class="label">From:</td> 
    <td data-bind="text: radioFrom"></td> 
</tr> 

Dies ist Teil meiner Javascript/KnockoutJS

<script> 
    var TabViewModel = function(){ 
     var self = this; 
     self.radioFrom = ko.observable("Dev1"); 
    }; 
    ko.applyBindings(new TabViewModel()); 
</script> 

Antwort

2

ko.dataFor() bekommt Modell KO Ansicht mit bestimmten HTML-Element gebunden ist.

ko.dataFor($("body")[0]).radioFrom() 

Eine weitere Option ist Instanz von TabViewModel auf globale Variablen zugewiesen werden, so wird es zugänglich von der Konsole mit der automatischen Vervollständigung

<script> 
    var TabViewModel = function(){ 
     var self = this; 
     self.radioFrom = ko.observable("Dev1"); 
    }; 
    window.viewModel = new TabViewModel(); 
    ko.applyBindings(window.viewModel); 
</script> 

Jetzt funktioniert folgendermaßen vor:

viewModel.radioFrom() 
+0

Wenn Ihre erste Lösung versuchen , Bekomme ich eine Fehlermeldung "Uncaught TypeError: Kann die Eigenschaft 'radioFrom' von undefined" nicht lesen. Das ist seltsam, weil ich ihm einen Anfangswert von Dev1 gebe. Was könnte falsch sein? – ButterJones