Rerender on new route or transition

I’m building a banner ad plug-in. I have a section of the DOM that I need to re-render each time the page transitions. I have attempted (unsuccessfully) both a Widget and Ember Component, but neither are updating. I loaded them via a Plugin Outlet. I even tried to simplify the problem and dump the current timestamp of the load to the screen (rather than a banner), but only get a re-render if I refresh the browser.

Can someone please point me in the right direction for a solution? I’ve been through the main Discourse developer tutorials, BTW. Just seems like I’m missing something simple.

In which place you are trying to render? In Discourse most of the header UI sections will not refresh across page transactions unlike you hit browser refresh.

And can you post your code to see how you are doing it.

The plugin outlet right above the topic list.

Maybe you can try the following code (not tested):

// My plugin initializer
export default {

	name: 'myPlugin',

	initialize(container) {

		// Reopen the router to add a didTransition hook
		const router = container.lookup('router:main')
		router.reopen({
			doSomething: function() {
				// Wait for rendering to be over. THIS DOESN'T WORK IN ALL CASES. 
				// In fact, there is no way to be sure rendering is complete, because 
				// a 'complete rendering' is meaningless (think about a looping DOM  
				// animation)
				Ember.run.schedule('afterRender', null, () => {
					// Do your stuff here
					...
				})
			}.on('didTransition')
		})

	}

}

さらにご教示いただけますでしょうか。

何を達成しようとしているのか、詳しく教えていただけますか?

フッター領域にコンポーネントを追加し、ユーザーがトピックにアクセスするたびにページ読み込み時にその内容を更新する必要があります。これは当コミュニティのトップトピックを含むスライダーで、匿名ユーザーに対してトピックページでのみ表示されます。したがって、ユーザーがスライダーに含まれる各トピックにアクセスするたびに、そのスライドはコンポーネントから削除する必要があります。以下のフッター outlet を使用してマウントしても、コンポーネントが再レンダリングされません。

Discourse で「フッター」がレンダリングされると、アプリは「イベント」を送信します。

そのイベントは inserted-custom-html:footer です。

このイベントを使用して、以下のようにフッターの内容を更新できます。

api.onAppEvent("inserted-custom-html:footer", () => {
  // ここに JS を追加
});

さらに詳しい情報はこちらをご覧ください。

これで目的の動作が実現できるはずです。もし動作しない場合はお知らせください。また、使用中のコードも投稿してください。

「いいね!」 2

ホームページ(のみ)の先頭に動的なコンテンツを配置したいと考えています。

ホームページへの遷移ごとに再レンダリングさせるためのベストプラクティスは何でしょうか?

これを使用している既存のプラグインへのリンクがあれば、ぜひご紹介ください。