2013-02-13 4 views
17

У меня есть форма, как это на моей странице:Weird редиректа с использованием данных привязки представить sammy.js и knockout.js вместе

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

Если у меня есть этот код в моем JS скрипте (конечно, я ве удалены все неродственного кода и тестирование, чтобы убедиться, что я все еще могу воссоздать только с этим кодом, как правило, вы будете иметь больше коды здесь, как .get и .post функции):

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

Когда форма отправлен, страница перенаправляется на странный URL-адрес, такой как ?ko_unique=1

Если я удалю часть Сэмми из моего сценария, этого не произойдет. Я думаю, что это имеет какое-то отношение к пузырькам событий, а Сэмми и Нокаут - как к подключению onSubmit, так и к браузеру, только учитывая возвращаемое значение из последней вызванной функции.

+0

Для меня, по крайней мере, поле, которое оно добавило, было ko_unique_1 = true, факт, который я приношу только потому, что я в него попал, и ничего не пришло. Если бы эта страница сказала, что я бы решил эту проблему несколько дней назад! –

ответ

48

После долгих поисков, и не найдя никаких ответов здесь на SO, я в конечном итоге найти это:

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

И изменил мой код следующим образом:

Sammy(function() { 

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

}).run(); 

Так что не Сэмми никогда попытки сделать что-нибудь особенное, когда форма будет отправлена ​​на мою страницу. Поскольку я использую Knockout, я не планирую использовать Sammy для любых форм. Если вам нужен более сложный код или версия плагина, вы можете увидеть вышеуказанный URL-адрес, но для меня, и я подозреваю, что для большинства использования KO это меньше кода и проще просто отключить эту функцию Sammy.

+0

Yup. Просто убил несколько часов, удивляясь, почему моя подача формы работает так, как ожидалось, с нокаутом, но результаты полностью стираются, когда таинственный новый путь (корень моего домена) применяется как место, и маршрут sammy, привязанный к '', берет верх. Хлоп. –

+1

здесь же, потребовалось бы несколько часов, чтобы отслеживать это, thx для публикации решения. чистый способ сделать это, вероятно, завершает это в модуль sammy, как это предлагается в одном из последних сообщений группы google. – philipphoffmann

+3

THANKKKK YOUUU !!!!! –