Backbone.js 视图 delegateEvents 未绑定(有时)

发布于 2024-10-19 08:06:03 字数 247 浏览 4 评论 0原文

我正在使用 Backbone.js,有时 视图事件 无法正确绑定。

我可以使用 jQuery 中的 $(viewselector).data() 检查事件绑定情况。大多数时候有事件,有时没有!

有哪些我应该注意的已知事情可能会导致这种情况?

I'm using Backbone.js and sometimes the views events do not get bound correctly.

I can check the event binding situation with $(viewselector).data() in jQuery. Most of the time there are events, sometimes there aren't!

Are there any known things I should watch out for that can cause this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

鹿童谣 2024-10-26 08:06:03

当视图初始化时,事件被委托给 this.el。因此,您需要:

  • 通过为构造函数提供“el”选项来指定元素来创建视图
  • 在视图上定义 el、标签、id、类名以直接在页面上创建或查找元素。
  • 将渲染的视图附加到视图的“el”元素
  • 确保在视图创建后不要替换“el”元素

对于最后一项,如果必须这样做,可以再次调用 delegateEvents 来重新委托您所看到的事件。

Events are delegated to this.el when the view is initialized. So you need to:

  • Create the view by giving the constructor the "el" option to specify the element
  • Define el, tag, id, classname on your view to create or find on the page your element directly.
  • Append your rendered view to the "el" element of the view
  • Make sure you do not replace the "el" element after the view creation

For the last item, if you have to do it, you can call delegateEvents once more to re-delegate the event on your view.

不知所踪 2024-10-26 08:06:03

在这些场景中,我的方法是在每个具有事件的视图的渲染中添加 delegateEvents() ,如下所示:

  $(this.el).empty();
  $(this.el).html(this.template({}));
  this.delegateEvents(); // this will bind all events ONCE AGAIN

这非常适合专门动态创建的视图,即在每次单击或所以...

My approach in these scenarios is to add delegateEvents() in render of each view that has an event, like the following:

  $(this.el).empty();
  $(this.el).html(this.template({}));
  this.delegateEvents(); // this will bind all events ONCE AGAIN

This is perfect for views specially created dynamically i.e. views that are declared new under each click or so...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文