Ember JS 2对HTML的更改在重新渲染后被删除

时间:2015-10-14 20:01:00

标签: javascript jquery ember.js ember-data handlebars.js

Ember 2.我有一个模板,用于显示模型数据。我有一个JS脚本对HTML进行了一些更改(在一些JQuery插件中等),每次渲染视图时我都需要运行它。

我在我的视图的didRender钩子中触发它。它在第一次加载时工作正常。但是当我第二次访问该页面时,我可以看到插件正在初始化,但是在下一刻,所有更改都会消失,页面就像最初在模板中一样。

我猜有些东西可以在模型中查找更改并在第二次渲染后重新渲染页面,但我不确定。我试图听取其他钩子,比如didUpdate,但它们没有触发。

这种奇怪行为可能是什么原因?

一个简单的例子: JS:

App.ResumeView = Ember.Component.extend({
    didRender: function () {
        $('.event h6').text('Hi!');
    },
    didUpdate: function () {
        $('.event h6').text('Hi!');
    }
});

HBS:

{{#each model.work as |work|}}
    <div class="event">
        <h4>{{work.position}}</h4>
        <h5>{{work.name}}</h5>
        <h6></h6>
        <span class="location">{{work.location}}</span>
        <p>{{work.description}}</p>
    </div>
{{/each}}

结果:在第一次加载时,所有H6都说'hi',然后如果我转到另一页并返回到此页面,它会显示'hi'一秒钟,然后它就会消失。

1 个答案:

答案 0 :(得分:0)

我打赌这个问题是因为插件已经初始化,它们没有再次初始化。尝试在willDestroyElement事件中删除jQuery插件。