imagesLoaded と Isotope という 2 つのサードパーティ ライブラリを統合するコンポーネントがあります。
ブラウザー モードと cli モードでテストを実行すると、競合するテスト エラーが発生します。エラーは次のとおりです。
Error: Assertion Failed: You have turned on testing mode, which disabled the run-loop's autorun. You will need to wrap any code with asynchronous side-effects in a run
また
TypeError: 'undefined' is not an object (evaluating 'self.$().isotope')
コールバックを ember 実行ループでラップしようとすると、cli モードではパスしますが、ブラウザ モードでは失敗します。なかなかいい組み合わせが見つからない。この問題は、imagesLoaded のコールバックで発生しているようです。そのプラグインを削除すると、問題なく通過するようです。
複数の組み合わせを試しましたが、これが私の最新のコードです。このコンポーネントで実行ループを適切に使用する方法について誰かが洞察を持っている場合、それは役に立ちます。
handleLoad: function() {
let self = this;
Ember.run.scheduleOnce('afterRender', this, function(){
self.$().imagesLoaded( function() {
Ember.run(function() {
self.$().isotope({itemSelector: ".card-container"});
self.$().isotope('shuffle');
});
}); // imagesLoaded
}); // Ember.run
}.on('didInsertElement')