【发布时间】:2012-03-20 22:57:02
【问题描述】:
我有一个这样的路由器,作为主要入口点:
window.AppRouter = Backbone.Router.extend({
routes: {
'': 'login'
},
login: function(){
userLoginView = new UserLoginView();
}
});
var appRouter = new AppRouter;
Backbone.history.start({pushState: true});
我有一个这样的模型/集合/视图:
window.User = Backbone.Model.extend({});
window.Users = Backbone.Collection.extend({
model: User
});
window.UserLoginView = Backbone.View.extend({
events: {
'click #login-button': 'loginAction'
},
initialize: function(){
_.bindAll(this, 'render', 'loginAction');
},
loginAction: function(){
var uid = $("#login-username").val();
var pwd = $("#login-password").val();
var user = new User({uid:uid, pwd:pwd});
}
});
我的 HTML 正文如下所示:
<form action="#" method="POST" id="login-form">
<p>
<label for="login-username">username</label>
<input type="text" id="login-username" autofocus />
</p>
<p>
<label for="login-password">password</label>
<input type="password" id="login-password" />
</p>
<a id="login-button" href="#">Inloggen</a>
</form>
注意: HTML 来自使用 express.js 的 Node.js,我是否应该在某处等待文档就绪事件?
编辑:
我试过这个,准备好后创建视图,没有解决问题。
$(function(){
userLoginView = new UserLoginView();
});
【问题讨论】:
-
我想你可能会回答你自己的问题。看看这个例子documentcloud.github.com/backbone/examples/todos/index.html他们使用“$(function() {”这是准备好的文档。
-
好的,我也试过这个,但是我将代码的哪一部分包装在准备好的里面。包裹路由器并不能解决问题,包裹模型/集合/视图也没有效果。
-
虽然它没有回答您的问题,但请考虑绑定到表单上的提交事件('submit #login-form')而不是链接上的点击事件,并将链接更改为输入 type="submit"。除了单击按钮之外,这还允许通过键盘提交表单。您根本不需要更改 loginAction。
-
使用回车键会很棒。会这样做。
标签: javascript events backbone.js