2012-03-26 8 views
2

so im a simple einreichen Bindung unter Verwendung einer Funktion Daten zu übergeben:knockout.js Grund einreichen Bindung Ausgabe

<form data-bind="submit: printTest"> 
    Enter a weight in the box: <BR> 
    <INPUT TYPE="text" id="inputWeight" VALUE=""><P> 
    <button type="submit">Submit</button> 
</form> 

Ich habe gerade angefangen mit KO arbeiten so war ich eine Basisdruckfunktion zu schreiben, diesen Eingang aus testen :

self.printTest = function(xxx){ 

     var myTextField = xxx; 
    if(myTextField.value != "") 
     alert("You entered: " + myTextField.value) 
    else 
     alert("Would you please enter some text?") 
    } 

mein Problem ist, wenn ich mich getroffen einreichen ein „Sie gemacht haben: undefined“ erhalten, aber wenn ich die Seite der Eingangs aktualisieren, die in der Form erhält eine Benachrichtigung. Das ist sehr frustrierend! idk, wenn dies ein Knockout-Problem oder ein einfaches HTML-Problem ist.

Antwort

3

Sie haben nicht den ganzen Code gezeigt, also werde ich versuchen, dies basierend auf dem, was oben ist, zu beantworten. Zuerst führt die submit binding einfach eine Funktion aus, wenn das Formular abgeschickt wird und erlaubt es Ihnen, das Formular zu stoppen/zu bestätigen.

Wenn submit ausgelöst wird, wird das form dom-Element übergeben, es wird nicht der Eingabewert übergeben, so dass dieser Code niemals funktionieren könnte.

Um den Wert der Eingabe zu drucken, müssen Sie zuerst den Wert der Eingabe an einen Wert in Ihrem Modell binden.

<input type="text" id="inputWeight" value="" data-bind="value: inputWeight" /> 

Sie können dann den Wert wie folgt warnen.

var viewModel = function() { 
    var self = this; 
    self.inputWeight = ko.observable(); 

    self.printTest = function() { 

     var valueEntered = self.inputWeight(); 
     if(valueEntered) { 
      alert("You entered: " + valueEntered); 
     } 
     else { 
      alert("Would you please enter some text?"); 
     } 
    } 
}; 

Heres the working fiddle

FYI - Ihre ursprünglichen Code/Markup hatte einige Fehler, Semikolons falsch Markup fehlt, die ich festgelegt.

Hoffe, das hilft.

+0

vielen Dank! Das hat mein Problem gelöst! Entschuldigung, wenn ich wie ein Noob bin, aber ich bin ziemlich neu in Java Scripting. Ich habe die Syntax von der Ko-Site verwendet, also danke auch für die Syntaxeingabe! –

+0

Kein Problem. Wir müssen alle irgendwo anfangen. KO ist ein bisschen komisch im Vergleich zu normalen js. – madcapnmckay