1

以下单页应用程序(由其他人创建)对用户进行身份验证, http://backbonedevise.herokuapp.com是使用 Backbonejs 和一个名为 Marionette 的插件创建的。我正在尝试在没有 Marionnette 的情况下重写它。成功和错误回调有这行代码

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

Marionette.button()在其内部实现了一个方法。

这很可能.button()是一个轻松管理按钮状态的钩子,但我没有深入研究它(我对 Marionette 一无所知)。

这是 Marionette 中.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)
        })

归根结底,要么您需要弄清楚.button()Marionette 中对您有什么作用并自己重新实现它,要么完全不使用它。

无论如何,jQuery UI 也有一个.button方法,所以既然你还在使用 jQuery,你可以插入它。

于 2013-02-11T23:20:35.613 回答