javascript - 强制刷新 ember View

标签 javascript ember.js view frameworks handlebars.js

我有一个 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/

相关文章:

javascript - Kendo ui - 删除时需要显示带有是或否按钮的剑道确认模式

javascript - 检查 Javascript 数组以查看值是否以特定值开头

javascript - .css() 不是函数 [jQuery]?

javascript - Ember 数据 ajax 调用

ember.js - 单击子组件时,如何防止调用父组件上的操作?

php - 创建自定义 PHP 语法分析器

javascript - 通过 HTMLBars 样式绑定(bind)属性用三元运算符替换绑定(bind)属性

python - 处理 View 语法错误与 Django 中的异常

javascript - Backbone : Are Views really Controllers?

ios - iOS 网页 View 弃用问题