我有一个这样的路由器,作为主要切入点:为什么Backbone.js的不具约束力我的事件
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来自Node.js的使用express.js,我是否应该等待某个文档就绪事件?
编辑:
我已经试过了,创建视图的时候准备好了,并没有解决问题。
$(function(){
userLoginView = new UserLoginView();
});
我想你可能会回答你自己的问题。看看这个例子http://documentcloud.github.com/backbone/examples/todos/index.html 他们使用“$(function(){”这是文档就绪。 – 2012-03-20 23:05:09
好吧,我也试过这个,但是,什么部分的代码是在包装里准备的,包装路由器并不能解决问题,包装模型/集合/视图也没有效果。 – 2012-03-20 23:09:35
尽管它没有回答你的问题,但考虑绑定到提交事件在表单上('submit#login-form')而不是链接上的点击事件,然后将链接更改为类型=“submit”的输入,这样可以通过键盘提交表单并单击按钮,你根本不需要改变loginAction – x1a4 2012-03-20 23:21:32