Backbone.js查看事件未启动
Backbone.js View Event Not Firing
我在启动backbone.js视图事件时遇到问题。当我点击#登录按钮时,什么都没有发生。
我也在使用iCanHaz(http://icanhazjs.com/)以加载模板。
这是我的javascript:
$(function() {
var router = new App.Router;
Backbone.history.start();
});
App.Router = Backbone.Router.extend({
routes: {
"login": "login"
},
login: function() {
var view = new App.Views.LoginView;
}
});
App.Views.LoginView = Backbone.View.extend({
el: '#login',
initialize: function() {
_.bindAll(this, 'render', 'validateLogin');
this.render();
},
render: function() {
App.Stage.html(ich.loginView());
},
events: {
'click button#login-button' : 'validateLogin'
},
validateLogin: function(event) {
console.log("validateLogin fired.");
}
});
这是我的标记(使用ICanHaz.js):
<script id="loginView" type="text/html">
<div data-role="page" id="login" class="container">
<div class="hero-unit">
<div class="row-fluid">
<div class="span12">
<div class="form-horizontal">
<fieldset>
<legend>Please login to continue</legend>
<div class="control-group">
<label class="control-label" for="username">Username</label>
<div class="controls">
<input type="text" class="input-xlarge" id="username">
</div>
</div>
<div class="control-group">
<label class="control-label" for="password">Password</label>
<div class="controls">
<input type="password" class="input-xlarge" id="password">
</div>
</div>
<div class="form-actions">
<button id="login-button" class="btn btn-primary btn-large">Login</button>
</div>
</fieldset>
</div>
</div>
</div>
</div>
</div>
</script>
我想明白了。Backbone在创建el之前将事件绑定到el。在异步iCanHaz调用的回调中,我使用了这个.setElement('#login'),它运行得很好。来自backbone.js文档:
setElement [view.setElement(element)]
"如果您想将Backbone视图应用于不同的DOM元素,请使用setElement,它还将创建缓存的$el引用,并将视图的委派事件从旧元素移动到新元素。"
我认为您没有正确使用View的'el'属性。尝试让属性引用jQueryDOM对象,而不仅仅是ID,如下所示:
App.Views.LoginView = Backbone.View.extend({
el: $('#login')
...
相关文章:
- 从控制器返回后Ajax启动事件激发
- 触摸启动事件未在iframe iOS 6中启动
- preventDefault之后的重新启动事件
- 如何获取在一系列事件中启动事件的元素
- 当窗口打开时,IE9在加载前启动事件
- 我的 JS 代码中的会话启动事件
- 仅当前一个事件完全完成时,才启动事件
- jQuery UI - 如何区分拖动/调整大小启动事件和单击事件
- Javascript “卡住”键(未注册的键启动事件)
- pace.js:“启动”事件未触发
- 在第一次触摸启动事件时禁用所有点击事件是个好主意吗?
- 如何将“拖动启动”事件与 CKEditor 实例分离
- 触摸启动事件上的Javascript触发函数
- 绑定到触摸启动事件,导致自动对焦集中在Mobile Safari中的任何单击上
- 触摸启动事件未在原来隐藏的按钮上工作
- 有没有一种方法可以使触摸启动事件不会触发点击事件
- 检测浏览器窗口是否处于活动状态,并在窗口再次处于活动状态后启动事件[JavaScript]
- 如何检测浏览器是否支持手势启动事件
- 首先启动事件,然后转到url
- 在IE7中无法捕获鼠标启动事件