コントローラーに次のウォッチャーを設定しました。
var embeds = {twitter: false, facebook: false};
$scope.$watch(embeds, function(newVal, oldVal) {
if(embeds.twitter && embeds.facebook) $scope.loading = appLoader.off();
});
これは、embeds
変更時に起動する必要があります。すべての埋め込みツイートと Facebook 投稿がページに読み込まれたかどうかを確認する次の関数があります。すべてのツイートまたは Facebook の投稿が読み込まれると、ダイジェスト サイクルをトリガーするためにブロックembeds
内で更新されます。$timeout
checkFBInit();
twttr.ready(function(twttr) {
twttr.events.bind('loaded', function(event) {
$timeout(function() {
embeds.twitter = true;
});
});
});
function checkFBInit() {
// Ensure FB.init has been called before attempting to subscribe to event
var fbTrys = 0;
function init() {
fbTrys++;
if (fbTrys >= 60) {
return;
} else if (typeof(FB) !== 'undefined') {
fbTrys = 60;
FB.Event.subscribe('xfbml.render', function() {
$timeout(function() {
embeds.facebook = true;
});
});
return;
} else {
init();
};
};
init();
};
私が抱えている問題は、ウォッチャーを設定したときに一度だけ起動することです。バインドおよび/または監視embeds
を試みましたが、ウォッチャーは一度しか起動しません。$scope
embeds.twitter
embeds.facebook