骨干.View事件只触发一次
Backbone.View event only fires once
jumpToWave事件只触发一次,我不明白为什么。
这是我的观点:
var WaveModalView = Backbone.View.extend({
template:_.template($('#tpl-wave-modal').html()),
events: {
'hidden': 'remove',
'click .jumpToWaveBtn':'jumpToWave'
},
jumpToWave:function(e){
e.preventDefault();
console.log("JMP")
var marker = this.model.collection.markers[this.model.id];
map.panTo(marker.getPosition());
bounceMarker(marker,1750);
},
render:function () {
var model = this.model;
var that = this;
$(this.el).html(this.template(model.toJSON()));
if(model.get('waveReviews').length > 0){
var reviewList = new WaveReviewList({model: model});
$('#waveReviews' + model.id).html(reviewList.render().el);
}
this.$("#waveSync" + model.id).click(function(e){
e.preventDefault();
if(window.me){
requestSyncWave(model.id,function(data){
window.me.fetch();
});
}
});
this.$("#waveEdit" + model.id).click(function(e){
e.preventDefault();
window.waveUnderEdit = model;
$(that.el).children(":first").modal('hide');
openWaveEditModal(model);
});
return this;
}
});
这是模板中相关的按钮:
<button class="btn btn-info jumpToWaveBtn" data-dismiss="modal" aria-hidden="true">Auf Karte
anzeigen</button>
当我点击按钮时,我有多个模态。事件为每个模式触发一次,之后"JMP"不再被记录。
我没有看到您在WaveModalView
上调用render
的代码,但我怀疑问题是您确实从其他地方调用render()
,这反过来又调用$(this.el).html(...)
,它取代了视图元素的内容,并且新插入的内容没有绑定到其元素的事件。
如果这确实是问题,您可以通过在render()
函数的末尾添加this.delegateEvents()
来解决它。
例如,检查这个问题和答案:为什么在Backbone.js中第二次渲染后事件没有触发?
相关文章:
- Javascript返回值只在循环中返回一次
- Jquery FadeIn FadeOut 只工作一次
- Javascript html每点击一次就会更改url
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- Rails操作只调用一次,但我在ajax中每秒钟都调用一次
- jQuery滚动功能只工作一次
- 刷新导致我的帖子“;张贴“;再一次
- 引导程序崩溃一次只能看到一个
- 有没有一个抽象层,这样我就可以集成一次,然后使用pusher、pubnub或faye
- 加载器组件仅加载一次
- 根据Angular.JS上一次的内容禁用选择
- 一次又一次地在新的和相同的选项卡中打开一个url
- 只在宽度以下和宽度以上各准备一次
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- Angularjs:空对象,当只有一次点击时
- 在Angular应用程序中每个帖子投票一次
- 主干模型更改事件只触发一次
- 使用每500ms运行一次的jquery函数是个好主意吗
- 在 CakePHP 中,现在 View->addScript() 已被弃用,我如何向我的布局添加脚本*一次*
- 骨干.View事件只触发一次