2014-09-19 93 views
1

我有一大堆的jQuery代码灰烬视图操作DOM的事情是当我使用:强制刷新烬视图

this.transitionTo("forecast.workpage", id); 

它只加载视图一次,但是当我尝试点击它再次视图不会再次执行,我尝试例如增加this.rerender)在我的didInsertElement这样结束几种方法(:

didInsertElement : function(){ 
//all my js code 
this.rerender() 
} 

但trows错误

Uncaught TypeError: Cannot read property '0' of undefined 

,尝试在开始,相同的结果中添加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但如果我点击的动作不执行代码。

回答

-1

要重新呈现整个路线(页面),您可以使用路线的refresh method。或者,作为this.rerender()失败的可能解决方案,您可以在之后第一次致电

didInsertElement: function() { 
    Ember.run.scheduleOnce('afterRender', this, function() { 
     this.rerender(); 
    }); 
} 

就个人而言,我不会推荐任何一个。当数据依赖于更改时,您的视图应该自动更新。如果它没有更新,你可能会让观察者设置错误。 (虽然我不太了解你的用例,但请使用你的最佳判断。)