使用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');
},
答案 0 :(得分: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,你可以插入它。