我在一个页面应用程序中使用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());
所有代码都运行良好,直到我在文本框中键入内容然后提交表单。 我预计在警告窗口之后没有网址浏览,但网址会更改为“http:// localhost:8258 / undefined?” 我原来的网址是“http:// localhost:8258”
我怀疑sammy url路由,所以从javascript代码中删除了sammy代码,然后在警告窗口后url不会更改。 也许我不明白萨米是如何运作的。
如何防止网址改变这种情况?
答案 0 :(得分:5)
Sammy将自己绑定到表单,以便您也可以为它们注册路由。
<form action="#1234" method="post">
JS:
Sammy(function() {
this.post('#:id', function() {
// do something...
return false; // avoid form submission
});
// ...
}).run();
答案 1 :(得分:3)
我也有这个问题,我在this answer找到了一个解决方案。以下是你如何让Sammy.js单独留下表格:
Sammy(function() {
// Your routing..
this.get('#:id', function () {
//do something....
});
// Make Sammy.js leave the forms alone!
this._checkFormSubmission = function(form) {
return false;
};
}).run();
应该这样做:)