强制刷新余烬视图

时间:2014-09-19 05:47:08

标签: javascript ember.js view frameworks handlebars.js

我有一个带有一堆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但我点击动作并没有执行代码。

1 个答案:

答案 0 :(得分:0)

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

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

就个人而言,我不会推荐任何一个。当视图依赖于更改时,您的视图应自动更新。如果它没有更新,你可能会让你的观察者设置错误。 (我真的不知道你的用例,所以请用你最好的判断。)