Javascript 公共路由器事件
我正在尝试将常见事件加入路由,然后根据需要扩展路由 像这样:Javascript 公共路由器事件,javascript,ember.js,Javascript,Ember.js,我正在尝试将常见事件加入路由,然后根据需要扩展路由 像这样: App.ScrollTopRoute = Ember.Route.extend({ renderTemplate: function() { console.log('Hi this works ?'); window.scrollTo(0, 0); } }); 然后我延长路线: App.TodoRoute = App.ScrollTopRoute.extend({
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相关的操作,这些操作应该进入
视图的didInsertElement
因此,对于您的窗口,滚动到(0,0)
才能工作,它应该在这样一个钩子中定义,假设您有一个todos
模板,那么它应该工作
App.TodosView = Ember.View.extend({
didInsertElement: function() {
window.scrollTo(0, 0);
}
});
在需要在不同类中执行公共代码的情况下,一种可能的方法是创建一个类并将其混合到需要它的类中
例如:
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
部分的演示,以及如何从扩展该Mixin
的路径调用Mixin
中定义的函数。看一看