簡體   English   中英

$ scope。$ watch僅觸發一次

[英]$scope.$watch only triggered once

我在控制器中設置了以下觀察程序:

var embeds = {twitter: false, facebook: false};

$scope.$watch(embeds, function(newVal, oldVal) {
    if(embeds.twitter && embeds.facebook) $scope.loading = appLoader.off();
});

embeds更改時應觸發。 我具有以下功能,用於檢查是否已為該頁面加載了我所有的嵌入式推文和Facebook帖子。 加載所有Tweets或Facebook帖子后,它會更新$timeout塊內的embeds以觸​​發摘要周期。

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 embeds.twitter綁定到$scope和/或觀看embeds.twitterembeds.facebook但是觀察者只觸發一次。

采用:

$scope.embeds = {twitter: false, facebook: false};
$scope.$watch('embeds', function(newVal, oldVal) {
    if ($scope.embeds.twitter && $scope.embeds.facebook) {
        $scope.loading = appLoader.off();
    }
}, true);

參見https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope。 第一個參數必須是返回參數名稱的stringfunction

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM