Emberjs常见的路由器事件

时间:2013-07-16 16:16:41

标签: javascript ember.js

我正在尝试将常见事件加入到路径中,然后根据需要扩展路径

喜欢这个

App.ScrollTopRoute = Ember.Route.extend({

   renderTemplate: function() {
           console.log('Hi this works ?');
        window.scrollTo(0, 0);
    }
});

然后我延长路线

App.TodoRoute = App.ScrollTopRoute.extend({   
  model: function(params) {
    return App.Todo.find(params.todo_id);
  }
});

问题是ScrollTopRoute内的事件未启动

这是加入路由的常规例程的最好方法吗?

1 个答案:

答案 0 :(得分:3)

您正在进行与DOM相关的操作,这些操作应该进入didInsertElement的{​​{1}}。

因此,对于view工作,应该在这样的钩子中进行定义,假设你有一个window.scrollTo(0, 0)模板而不是这个模板。

todos

如果您需要在不同的类中执行公共代码,一种可能的方法是创建Mixin并将其混合到需要它的类中。

例如:

App.TodosView = Ember.View.extend({
  didInsertElement: function() {
    window.scrollTo(0, 0);
  }
});

至于Mixin,请参阅此处查看simple demo

希望这能回答你的问题,如果不让我知道,我可以进一步改进。