javascript - 如何添加事件处理程序以在 Ember.js 中路由显示的事件?

标签 javascript jquery ember.js fancybox

我在 Ember.js 中有一个简单的网站:

App.Router.map(function() {
  this.resource('main', { path: '/main' });
    this.route('sub', { path: '/sub' });

像这样的模板:

  <script type="text/x-handlebars" data-template-name="main/sub">
      <a href='image.jpg' class='fancyBox'><img src='image.jpg'></a>
  </script>

现在为了制作 FancyBox 以便当我单击图像时它会在新层中打开我通常调用函数:

$("a.fancyBox").fancybox();

现在我需要在显示主/子时调用它。这必须在模板主/子显示后完成。

那么如何给正在显示的模板绑定(bind)事件来调用fancybox呢?

最佳答案

一种可能的方法是创建一个 MainSubView 并挂接到 didInsertElement功能:

App.MainSubView = Ember.View.extend({
  didInsertElement: function() {
    $("a.fancyBox").fancybox();
  }
});

didInsertElement将 View 插入 DOM 时将调用该函数。

另外值得一提的是,如果在 View 从 DOM 中删除后对 fancybox() 的调用需要一些清理,您可以在 didInsertElement's 中执行此操作对应 Hook willDestroyElement .

例子:

App.MainSubView = Ember.View.extend({
  didInsertElement: function() {
    $("a.fancyBox").fancybox();
  },
  willDestroyElement: function() {
    // remove here the displayed fancybox
  }
});

希望对您有所帮助。

关于javascript - 如何添加事件处理程序以在 Ember.js 中路由显示的事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17966345/

相关文章:

javascript - Sequelize 无法通过关联创建

javascript - 如果...否则如果javascript

javascript - 从左到右动画

javascript - 如何为粘性标题设置动画?

node.js - 使用 NodeJs 服务器和 Electron 的 Web 应用程序之间的混淆

javascript - Ember 数据: createObject with an initial async relationship value

javascript - 确定矩形上垂直或水平墙壁上的撞击

javascript - 你能(应该)使用 Twitter Bootstrap 的 "half"吗?

javascript - 平滑滚动到页面上的特定元素

javascript - 从父路由/模板访问嵌套路由参数