我有一个带有一堆jquery代码的ember视图来操作dom,事情是我使用的时候:
this.transitionTo("forecast.workpage", id);
它只加载视图一次,但是当我再次点击它时,视图不会再次执行,我尝试了几种方法,例如在我的didInsertElement的末尾添加this.rerender(),如:
didInsertElement : function(){
//all my js code
this.rerender()
}
但它有一个错误
Uncaught TypeError: Cannot read property '0' of undefined
,尝试在begin中添加this._super(),同样的结果,有没有办法强制视图从视图本身或路由中刷新?还是控制器?
编辑:尝试这种方法但没有结果...
didInsertElement : function(){
this._super();
Ember.run.scheduleOnce('afterRender', this, this.afterRenderEvent);
},
afterRenderEvent: function(){
//$(document).foundation();
$(".sortables li:even").find('div.row').addClass("gray");
}
同样的事情,执行onces但我点击动作并没有执行代码。
答案 0 :(得分:0)
要重新渲染整个路线(页面),您可以使用路线refresh method。或者,作为this.rerender()
失败的可能解决方案,您可以在第一次呈现之后调用。
didInsertElement: function() {
Ember.run.scheduleOnce('afterRender', this, function() {
this.rerender();
});
}
就个人而言,我不会推荐任何一个。当视图依赖于更改时,您的视图应自动更新。如果它没有更新,你可能会让你的观察者设置错误。 (我真的不知道你的用例,所以请用你最好的判断。)