2013-02-13 8 views
17

ho un modulo come questo sulla mia pagina:reindirizzamento strano utilizzando i dati-bind presentare, sammy.js e knockout.js insieme

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

Se ho questo codice nel mio script JS (ovviamente ho' ve rimosso tutto il codice non correlato e testato per assicurarsi che posso ancora ricreare solo con questo codice, di solito avrete più il codice qui dentro come .get e funzioni .post):

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

quando il modulo viene inviato, la pagina reindirizza a un URL strano come ?ko_unique=1

Se rimuovo la parte Sammy dal mio script, ciò non accade. Penso che abbia qualcosa a che fare con il bubbling degli eventi e Sammy e Knockout che amministra l'onSubmit e che il browser rispetti solo il valore restituito dall'ultima funzione chiamata.

+0

Per me, almeno, il campo aggiunto era ko_unique_1 = true, un fatto che ho portato solo perché ho cercato su Google e non è venuto fuori nulla. Se questa pagina dicesse che avrei risolto questo problema giorni fa! –

risposta

48

Dopo molte ricerche, e non trovando alcuna risposta qui su SO, ho finito per trovare questo:

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

e modificato il mio codice a questo:

Sammy(function() { 

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

}).run(); 

In modo che Sammy mai tenta di fare qualcosa di speciale quando un modulo viene inviato sulla mia pagina. Dato che sto usando Knockout, non ho intenzione di usare Sammy per nessun modulo. Se vuoi codice più complesso o una versione plugin puoi vedere l'URL sopra, ma per me, e sospetto che la maggior parte usi KO, è meno codice e più semplice disabilitare questa funzione Sammy.

+0

Sì. Ho appena ucciso un bel po 'di ore chiedendomi perché il mio modulo di invio funzionasse come previsto con knockout, ma i risultati sono stati cancellati completamente quando un nuovo misterioso percorso (la radice del mio dominio) è stato applicato come posizione e il percorso sammy legato a "prende il sopravvento". Yikes. –

+1

stesso qui, ci sarebbero volute ore per rintracciarlo, grazie per aver postato la soluzione. il modo più semplice per farlo è probabilmente inserire questo in un plug-in sammy come suggerito in uno degli ultimi post del gruppo di Google. – philipphoffmann

+3

THANKKKK YOUUU !!!!! –

Problemi correlati