我想在 View 呈现时触发 Backbone 事件。理想情况下,我会写这样的内容:
var DetailView = Backbone.View.extend({
id: 'detailpage',
events: {
'ready document': '_bringSlideDown',
'click .close-slideDown': '_closeSlideDown'
},
一旦 View 加载完成,我就可以创建并调用 _bringSlideDown
函数。这不起作用 - 有更好的方法来调用此事件吗?
具体来说,我希望该事件仅运行一次,这就是为什么我不将其嵌套在渲染函数中的原因。我希望 View 能够多次渲染,但希望在解除绑定(bind)之前使用 Backbone 的 .off() 方法处理该事件一次。谢谢!
最佳答案
我想提三点。
- 首先,按照最佳实践,我执行 Backbone 代码,直到 DOM 准备好了,所以如果你遵循这个规则,你的主干 View 将是 DOM 就绪后执行(因此无法监听就绪事件)。
- 如果你想用 jQuery 监听 DOM 添加,你应该使用 插件如:https://github.com/brandonaaron/livequery
- 关于您的用例,不要监听 DOM,而是检查渲染 方法 if 是您第一次使用以下方式渲染 View 一面旗帜。
我会做这样的事情:
var YourView = Backbone.View.extend({
_rendered : false,
events : {
'click .close-slideDown': '_closeSlideDown'
},
render: function(){
//some render stuff
if( !this._rendered ){
this._rendered = true;
this._bringSlideDown();
}
}
});
基本上
关于javascript - 我可以触发 .ready() 的 Backbone 事件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21345440/