5

1ページアプリケーションにSammyJSでKnockoutJSを使用しています。

HTMLには、次のようなフォームタグがあります

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

そして私のビューモデルでは、2つの関数とサミールート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?」のようなものに変更されました。元の URL は「http://localhost:8258」です。

私はサミーの URL ルーティングを疑っていたので、JavaScript コードからサミーのコードを削除しました。その後、警告ウィンドウの後に URL は変更されません。たぶん、サミーがどのように機能するかを理解していません。

この場合、URL を変更しないようにするにはどうすればよいですか?

4

2 に答える 2

5

Sammy はそれ自体をフォームにバインドして、それらのルートも登録できるようにします。

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

JS:

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

        return false; // avoid form submission
    });

    // ...
}).run();
于 2012-06-19T22:22:23.440 に答える