我有一个 ember View ,里面有一堆 jquery 代码来操作 dom,问题是当我使用时:
this.transitionTo("forecast.workpage", id);
它只加载 View 一次,但是当我再次尝试单击它时, View 不会再次执行,我尝试了几种方法,例如在我的 didInsertElement 末尾添加 this.rerender() ,如下所示:
didInsertElement : function(){
//all my js code
this.rerender()
}
但它会引发错误
Uncaught TypeError: Cannot read property '0' of undefined
,尝试在开头添加 this._super() ,结果相同,有没有办法强制 View 从 View 本身或路由刷新?或 Controller ?
编辑:尝试这种方法没有结果...
didInsertElement : function(){
this._super();
Ember.run.scheduleOnce('afterRender', this, this.afterRenderEvent);
},
afterRenderEvent: function(){
//$(document).foundation();
$(".sortables li:even").find('div.row').addClass("gray");
}
同样的事情,执行一次,但我点击操作的地方不执行代码。
最佳答案
要重新渲染整个路线(页面),可以使用路线的 refresh method 。或者,作为 this.rerender()
失败的可能解决方案,您可以在第一次渲染之后调用它。
didInsertElement: function() {
Ember.run.scheduleOnce('afterRender', this, function() {
this.rerender();
});
}
就我个人而言,我不会推荐其中任何一个。当您的 View 所依赖的数据发生变化时,它应该自动更新。如果它没有更新,你的观察者可能设置错误。 (虽然我不太了解您的用例,所以请使用您的最佳判断。)
关于javascript - 强制刷新 ember View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25927159/