为什么Backbone.js不是't绑定我的活动
Why Backbone.js isn't binding my event
我有一个这样的路由器,作为主要入口点:
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();
});
从您发布的代码来看,它不像是在为UserLoginView
实例分配el
属性。我认为events
散列无法绑定事件处理程序,除非视图具有el
(即视图的根DOM元素,请参阅文档)。初始化视图时,它将处理程序绑定到根元素,对子元素使用.delegate()
,因此没有根元素,也没有处理程序,即使使用基于id的选择器也是如此。试试这个:
window.UserLoginView = Backbone.View.extend({
el: '#login-form',
// etc
});
请注意,正如注释中所讨论的,您应该在DOM准备好之后进行此操作。这里的标准方法是启动$(document).ready
:中的路由器和历史机器
$(function() {
var appRouter = new AppRouter;
Backbone.history.start({pushState: true});
});
相关文章:
- css绑定中的自定义类名
- Jquery:将函数绑定到已绑定元素的点击事件
- 对绑定元素的角度访问
- 数据互绑定问题:转换器只运行一次,无法绑定元素的 ID
- 绑定未来的类在 jQuery 中失败
- 这在 Object 方法中不引用对象,而是引用函数绑定到的标记
- 要在移动设备中绑定到的事件
- 绑定返回的结果和使用function()的结果之间有什么区别
- 传递类似绑定事件的参数
- 如何删除WinJS组绑定列表的最后一项
- JSTree 绑定我自己的点击事件
- 我想要从控制器绑定iframe的src
- 为什么Backbone.js不是't绑定我的活动
- 我应该如何在ng重复中绑定对象的值
- 我可以将jquery事件绑定到的元素的最大数量是多少
- 为什么我不能绑定我的指令输入?
- 为什么我的MVC动作不是模型绑定我的集合
- 正在绑定我的JS/TS项目反模式
- 在ASP中使用ModelBinding时,我可以选择想要绑定属性的元素吗?净MVC
- js不想绑定我的记录列表,已按位置分组