我将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();