並べ替えました。Ember.js で Three.js を使用する場合のイベント伝播/Ember バインディングの問題を説明するその他のユーザー向け。私が抱えていた問題は、Three.js がシーンを作成し、それを既存の DOM 要素に追加していたことです。
renderer = new THREE.CSS3DRenderer();
renderer.setSize( window.innerWidth, window.innerHeight );
document.getElementById( 'container' ).appendChild( renderer.domElement );
Ember.Application を作成する際に、ルート要素を指定しました。
window.App = Ember.Application.create({
VERSION: '0.1.0',
LOG_TRANSITIONS: true,
rootElement: '#column',
ready: function() {}
});
Three.js は ember ビューをコンテナー div に移動するため、Ember.eventDispatcher を介してイベントを探している #column div では見つかりません。
これを解決するために、rootElement 宣言をコメントアウトしました。名前付きテンプレートがあり、レンダリング先のページで {{outlet}} を受け取ったので、Ember はこれなしでビューをページに入れることができました。次に、Three.js がビューを #container div に移動したとき、Ember は引き続きそれらのイベントを監視できました。