奇怪的重定向使用数据绑定提交,sammy.js和knockout.js在一起

时间:2013-02-13 19:29:14

标签: knockout.js sammy.js

我的页面上有这样的表格:

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

如果我在我的JS脚本中有这个代码(当然我已经删除了所有不相关的代码并进行了测试以确保我仍然可以仅使用此代码重新创建,通常你会在这里有更多代码,如.get和.post函数):

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

提交表单后,页面会重定向到?ko_unique=1

等奇怪的网址

如果我从脚本中删除Sammy部分,则不会发生这种情况。我认为它与事件冒泡有关,Sammy和Knockout都挂钩onSubmit,浏览器只关注最后一个函数的返回值。

1 个答案:

答案 0 :(得分:49)

经过多次搜索,没有在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();

因此,当我在页面上提交表单时,Sammy从不尝试做任何特别的事情。由于我正在使用Knockout,我不打算将Sammy用于任何形式。如果您想要更复杂的代码或插件版本,您可以看到上面的URL,但对我来说,我怀疑大多数人使用KO,代码更少,更容易禁用这个Sammy功能。