2013-02-11 126 views
0

使用Backbonejs和一个名为Marionette的插件创建了以下用于验证用户的单页应用程序(由其他人创建),http://backbonedevise.herokuapp.com。我正试图在没有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'); 
     }, 
+1

在什么地方'按钮()'来自法?这可能是你需要重新实现的方法 – 2013-02-11 23:13:19

+0

我与@JuanMendes在这一个。我找不到任何对您所指的脚本片段的引用,即使所有已加载的脚本文件都使用Firebug的全文搜索。 – 2013-02-11 23:20:12

+0

'.button()'是作为Marionette的一部分实现的。如果解压链接网站顶部的.js文件,Marionette会直接使用jQuery打包。 – rockerest 2013-02-11 23:23:14

回答

2

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

很可能.button()是一个易于管理按钮状态的钩子,但我没有深入了解它(我对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,你可以插入那个英寸

+0

+1,因为您花时间格式化缩小的代码。它仍然不是很理解,但至少它是可读的。 – 2013-02-11 23:23:39

+0

谢谢,我试图谷歌木偶按钮的方法,但找到了虚无。。。 – Leahcim 2013-02-11 23:24:45

+1

@FrédéricHamidi谢谢,我欺骗并使用[jsbeautifier.org](http://jsbeautifier.org/)为我解析它! – rockerest 2013-02-11 23:26:50