Angular Delay自定义指令的链接功能

时间:2015-06-01 08:42:00

标签: angularjs angularjs-directive q

我有一个简单的自定义指令,用于检查和设置其元素上的href。 但我需要检查从服务器(async)加载的数据的href,以确保用户可以访问该链接(ACL类型)。

那么在这个数据加载完成之前,如何延迟完成工作的链接功能呢?

1 个答案:

答案 0 :(得分:0)

好的,我为自己做点什么,感谢任何提高它的指示, 我做了gist

angular.module('myModule')
    .factory('dataLoader', ['$http', function ($http) {
        var __list = null;
        var __request = null;
        return function (callbak) {
            if (__list)
                callbak(__list);
            else {
                if (!__request)
                    __request = $http({
                        method: 'GET',
                        url: '/myurl',
                        params: {}
                    });

                __request.success(function (d) {
                    if (d.data) {
                        __list = d.data;
                        callbak(__list);
                    }
                });
            }
        }
    }])
    .directive('myDirective', ['dataLoader', function (dataLoader) {
        return {
            restrict: "A",
            compile: function (scope, element, attrs) {
                return function (scope, element, attrs) {
                    dataLoader(function (acl) {
                        console.log(acl.length);
                        var href = attrs.myDirective;
                        if (href) {
                            if (href[0] != '#')
                                href = '#' + href;

                            element.attr('href', href);
                        }
                    });
                };
            }
        };
    }]);