从指令获取元素样式 - 随机失败

时间:2014-09-29 18:53:22

标签: javascript css angularjs angularjs-directive

在一个角度指令中,我想获得一些样式(例如: backgroundImage )来存储它以备将来使用。我有以下代码:

angular.module('myApp')
    .directive('myDirective', function() {
        return {
            restrict: 'A',
            terminal: true,
            link: function(scope, element, attrs) {                                 
                // examples of how get it
                console.log(element.css('background-image'));
                console.log(window.getComputedStyle(element[0]).backgroundImage);
            }
         };
     });

大多数情况下,我成功获得 backgroundImage 值,但是我只获得 null 值。然后我刷新页面并再次成功获取值。如何在没有此问题的情况下从指令获取样式属性?

任何提示或建议都表示赞赏。感谢

1 个答案:

答案 0 :(得分:0)

通过等待$viewContentLoaded事件,您可以确保在加载所有内容后正在阅读CSS:

angular.module('myApp')
    .directive('myDirective', function() {
        return {
            restrict: 'A',
            terminal: true,
            link: function(scope, element, attrs) {                                 
                scope.$on('$viewContentLoaded', function() {
                    console.log(element.css('background-image'));
                    console.log(window.getComputedStyle(element[0]).backgroundImage);
                });
            }
         };
     });