AngularJS $工厂范围

时间:2015-10-12 11:28:37

标签: javascript angularjs factory

我有以下情况,我使用jQuery preload插件。

angular.module('app')
    .factory('Preloader', function Preloader(Videos) {


        return {
            start: function() {

                $.html5Loader({
                    filesToLoad: Videos.query(),
                    onBeforeLoad: function() {},
                    onComplete: function() {
                      //$scope.loaded = done
                    },
                    onElementLoaded: function(obj, elm) {},
                    onUpdate: function(percentage) {
                      //$scope.precentage = precentage
                    }
                });

            }
        }

    });

我建立了一个包装插件的工厂。

在我的控制器中,我有类似的东西:

angular.module('playlist')
    .controller('Ctrl', function($scope, Preloader, Videos) {

        Preloader.start();        

在HTML上我有一个加载屏幕,我想用ng-if ="!加载"隐藏。

有人可以解释一下如何将$ scope.loaded从工厂链接到我的控制器内的$ scope.loaded吗?

1 个答案:

答案 0 :(得分:2)

指令是这种情况下的正确方法,而不是工厂。 这样,您可以使用指令loaded公开$scope变量。

如果您仍想使用工厂,请将loaded变量作为工厂成员公开,以便您可以监视控制器中的更改。

修改

要致电start,您可以使用事件或双向绑定(这是我最喜欢的)