Emberjs常见路由器事件
Emberjs common router events
我正在尝试将常见事件连接到一个路由,然后根据需要扩展该路由
像这样:
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内的事件没有启动
那么,哪种方法是连接路由的常用例程的最佳方法呢?
您正在执行与DOM相关的操作,这些操作应该进入view
的didInsertElement
。
因此,为了使window.scrollTo(0, 0)
工作,它应该在这样一个钩子中定义,假设您有一个todos
模板,那么它应该工作。
App.TodosView = Ember.View.extend({
didInsertElement: function() {
window.scrollTo(0, 0);
}
});
如果您需要在不同的类中执行公共代码,一种可能的方法是创建一个Mixin
并将其混合到需要它的类中
例如:
App.CommonMixin = Ember.Mixin.create({
myCommonFunction: function() {
console.log('this works');
}
});
App.ScrollTopRoute = Ember.Route.extend(App.CommonMixin, {
...
// myCommonFunction is available here
});
App.AnotheScrollTopRoute = Ember.Route.extend(App.CommonMixin, {
...
// myCommonFunction is available here
});
至于Mixin,请参阅这里的简单演示。
希望这能回答你的问题,如果不告诉我,我可以进一步改进。
相关文章:
- 在Angular ui路由器中,如何将事件从一个视图发送到另一个视图
- Iron:路由器在更改路由器上添加事件
- 未从url激发事件上的主干路由器
- 无法解除绑定并关闭我的主干路由器中的事件
- 主干路由器导航到../#/<路由>而不触发路由器事件.如何
- 在一个控制器 ui 路由器中的所有 $state.go() 事件之前运行 check
- 带路由器的流星 - 模板事件未触发
- 从应用路由器触发事件
- 在 ui 路由器状态之间发送事件
- 一个“;监听路由器”;(响应视图/模型中的路由器事件)
- Angular 2路由器全局状态更改事件
- Marionette事件聚合器vs主干路由器
- 主干路由器创建多个视图,从而导致多个事件绑定到同一视图
- Ember.js-在控制器/路由器链上传播事件
- Emberjs常见路由器事件
- 访问页面时未触发主干网/Marionette路由器事件
- 如何在Backbone.js中跟踪路由器更改事件
- 路由器(发射器)和处理器(监听器)中的Node.js事件
- React-router:从路由器获取参数,监听事件失败
- Angular UI路由器:我应该在哪里改变状态?控制器吗?服务?事件监听器