2013-02-11 97 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