我将KnockoutJS与SammyJS一起用于一页应用程序。

在HTML中,我有如下形式标签

<form data-bind='submit: search'>
  <label>Find user:</label>
  <input data-bind='value: name' />
</form>

在我的viewmodel中,声明了两个函数和sammy route url
function ViewModel() {
    var self = this;
    self.name = ko.observable("");
    self.search = function () {
      alert(self.name);
    };

    Sammy(function () {
        this.get('#:id', function () {
           //do something....
        });
    }).run();
}

ko.applyBindings(new ViewModel());

所有代码都运行良好,直到我在文本框中键入内容然后提交表单为止。
我希望警报窗口后没有URL浏览,但是URL更改为类似“http://localhost:8258/undefined?”的内容。
我原来的网址是“http://localhost:8258”

我怀疑sammy url路由,因此从javascript代码中删除了sammy代码,然后在警报窗口后url不会更改。
也许我不明白傻瓜是如何工作的。

在这种情况下如何防止url更改?

最佳答案

Sammy将自己绑定(bind)到表单,使您也可以为其注册路线。

<form action="#1234" method="post">

JS:
Sammy(function() {
    this.post('#:id', function() {
        // do something...

        return false; // avoid form submission
    });

    // ...
}).run();

10-04 15:35