1

私の ember アプリは、左側に投稿のリスト、右側に個々の投稿のビューを設定しています。左側の投稿の 1 つがクリックされると、そのコンテンツが右側のビューに表示されます。

これは、投稿に構文の強調表示を追加するために使用しているコードです。

App.PostView = Ember.View.extend({
  didInsertElement: function() {
    $('pre code').each(function(i, e) {hljs.highlightBlock(e)});
  }
});

最初の投稿ビューがレンダリングされると、構文が強調表示されますが、別の投稿をクリックしてコンテンツが投稿ビューに読み込まれると、構文の強調表示が適用されません。投稿がレンダリングされるたびに強調表示が適用されるようにするにはどうすればよいですか?

4

2 に答える 2

0

これは最もクリーンな方法ではないかもしれませんが、コントローラーのモデルにオブザーバーを追加して、必要な変更を加えることができます。ただし、これはモデル自体が変更された場合にのみ機能します。

このような:

postHasChanged: function() {
    if (this.get('state') === 'inDOM') {
        $('pre code').each(function(i, e) {
            hljs.highlightBlock(e)
        });
    }
}.observes('controller.model')
于 2014-05-14T21:29:29.400 に答える
0

より包括的な例がなければ、私は推測することしかできません。PostView右側のパネルで何が作成されますか? その場合は、ビューのレンダリングをビュー内のものに制限する必要があります。

あなたの例では、ドキュメント内の$('pre code')すべてのpre code要素を対象とします。this.$('pre code')、またはビュー内で強調表示する必要がある要素/セレクターを試してください。

于 2014-05-14T20:41:44.010 に答える