1

ユーザーを認証する次のシングルページアプリケーション(他の誰かによって作成された)、 http://backbonedevise.herokuapp.comは、BackbonejsとMarionetteと呼ばれるプラグインを使用して作成されました。マリオネットなしで書き直そうとしています。成功とエラーのコールバックには、このコード行があります

el.find('input.btn-primary').button('reset');

ログイン前のHTMLは次のようになります

 <input type="submit" value="Login" class="btn btn-primary">

つまり、タイプリセットはありません。行el.find('input.btn-primary').button('reset');がどういうわけかボタンをリセットすると思います。このように書き直してみました

$('input.btn-primary').button('reset');

しかし、私はエラーを受け取りました、

Object has no method button. 

私が間違っている可能性があることと、それを修正する方法を説明していただけますか。

成功のコールバック。

this.model.save(this.model.attributes, {
      success: function(userSession, response) {
        el.find('form').prepend(BD.Helpers.Notifications.success("Instructions for resetting your password have been sent. Please check your email for further instructions."));
        el.find('input.btn-primary').button('reset');
      },
4

1 に答える 1

3

.button()マリオネットは、その内部にメソッドを実装しています。

これはボタンの状態を簡単に管理するためのフックである可能性が.button()ありますが、私はそれをあまり深く掘り下げませんでした(マリオネットについては何も知りません)。

これが定義されているマリオネットのインスタンス.buttonですが、私が見つけたそれを参照する場所はたくさんあります。

a.fn.button = function (c) {
        return this.each(function () {
            var d = a(this),
                e = d.data("button"),
                f = typeof c == "object" && c;
            e || d.data("button", e = new b(this, f)), c == "toggle" ? e.toggle() : c && e.setState(c)
        })

つまり、Marionetteで何.button()ができるかを理解して自分で再実装するか、完全になしで実行する必要があります。

価値があるのは、jQuery UIにも.buttonメソッドがあるため、まだjQueryを使用しているので、それをプラグインすることができます。

于 2013-02-11T23:20:35.613 に答える