2013-02-13 1 views
17

Ich habe eine Form wie diese auf meiner Seite:Weird-Umleitung unter Verwendung von Daten-bind einreichen, sammy.js und knockout.js zusammen

<form data-bind="submit: AddFolder"></form> 

Wenn ich diesen Code in meinem JS-Skript (natürlich ich habe alle von der unabhängigen Code entfernt und getestet, um sicherzustellen, dass ich immer noch mit nur diesen Code neu erstellen können, in der Regel werden Sie innerhalb hier mehr Code haben wie .get und .post Funktionen):

Sammy(function() { 
}).run(); 

Wenn die Form Die Seite wird zu einer seltsamen URL wie ?ko_unique=1

weitergeleitet

Wenn ich den Sammy-Teil aus meinem Skript entferne, passiert das nicht. Ich denke, es hat etwas mit Event-Sprudeln zu tun, und Sammy und Knockout hängen beide den onSubmit an, und der Browser respektiert nur den Rückgabewert der zuletzt aufgerufenen Funktion.

+0

Für mich zumindest, das Feld, das es hinzugefügt wurde, war ko_unique_1 = wahr, eine Tatsache, die ich nur bringe, weil ich es google und nichts kam. Wenn diese Seite es sagte, hätte ich dieses Problem vor Tagen gelöst! –

Antwort

48

Nach langem Suchen und keine Antworten hier auf SO zu finden, landete ich diese finden auf:

https://groups.google.com/forum/?fromgroups#!topic/sammyjs/EYW-2Ygk3z8

und modifizierte meinen Code dazu:

Sammy(function() { 

    // Override this function so that Sammy doesn't mess with forms 
    this._checkFormSubmission = function(form) { 
     return (false); 
    }; 

}).run(); 

So dass Sammy nie versucht, etwas Besonderes zu tun, wenn ein Formular auf meiner Seite eingereicht wird. Da ich Knockout verwende, habe ich nicht vor, Sammy für irgendwelche Formulare zu verwenden. Wenn Sie komplexeren Code oder eine Plugin-Version möchten, können Sie die obige URL sehen, aber für mich, und ich vermute, für die meisten, die KO verwenden, ist es weniger Code und einfacher, diese Sammy-Funktion einfach zu deaktivieren.

+0

Yup. Ich habe gerade einige Stunden damit verbracht, mich zu fragen, warum meine Form submit wie erwartet mit Knockout funktionierte, aber die Ergebnisse wurden komplett gelöscht, als ein mysteriöser neuer Pfad (die Wurzel meiner Domain) als Ort angewendet wurde und die Sammy-Route an '' übernimmt. Huch. –

+1

das gleiche hier, hätte Stunden gebraucht, um dies nachzuverfolgen, thx für die Buchung der Lösung. Die saubere Art, dies zu tun, ist wahrscheinlich, dies in ein Sammy-Plugin zu wickeln, wie es in einem der letzten Google-Gruppen-Posts vorgeschlagen wurde. – philipphoffmann

+3

THANKKKK YOUUU !!!!! –

Verwandte Themen