angularjs:如何知道所有指令已准备就绪

时间:2015-09-11 08:33:38

标签: angularjs directive

我想确保所有指令都准备就绪。如何?这是我尝试的,但不正确。

leafUi.factory('leafState', function($rootScope) {
    var unreadyUi = [], readyUi = [];
    return {
        unready: function(ui) {
            console.log(ui + ' unready');
            unreadyUi.push(ui);
        },
        ready: function(ui) {
            console.warn(ui + ' ready');
            readyUi.push(ui);
            if (readyUi.length === unreadyUi.length) {
                $rootScope.$broadcast('leafUiReady', 'all leaf ui component is ready');
                // unreadyUi = null;
                // readyUi = null;
            }
        }
    }
});

leafUi.directive('leafScroll', function($timeout, leafState, leafScroll) {
    return {
        restrict: 'E',
        transclude: true,
        link: function(scope, ele, attrs, ctrl, transclude) {
            leafState.unready('leafScroll');
            // more code .....
            leafState.ready('leafScroll');
        }
    };
});

leafUi.directive('leafContent', function($timeout, leafState, leafScroll) {
    return {
        restrict: 'E',
        transclude: true,
        link: function(scope, ele, attrs, ctrl, transclude) {
            leafState.unready('leafContent');
            // more code .....
            leafState.ready('leafContent');
        }
    };
});
// more directive.....

以下是日志示例:

example log

从日志中,我们可以知道指令ready和unready可以被其他指令分开,readyUi的长度有很多机会等于unreadyUi。 那么我怎样才能保证所有指令都准备就绪?

0 个答案:

没有答案