编译angularJS后是否可以加载自定义指令?

时间:2016-02-04 12:01:52

标签: angularjs

我有这个指令来计算div的高度。

// Directive to log a height. We have to add on some value to a final height, because css style will be undefined.
rootApp.directive('logHeightCategories', ['$timeout', function($timeout) {
    return {
        restrict: 'A',
        link: function(scope, element) {
            scope.prepMaxHeightCat = element.prop('offsetHeight');
            scope.value = 0;
            $timeout(function() {
                scope.maxHeightCat = scope.value + scope.prepMaxHeightCat;
            }, 0);
        }
    };
}]);

css规则max-height: {{maxHeightCat}}px适用于该div用于动画目的。 然而,闪烁效应破坏了欲望的目标。所以我为{div}添加了ng-cloakdisplay:none

我认为ng-cloak被渲染为最后一个,因此我认为我的指令logHeightCategories之前已执行。所以我总是得到0px结果。

...即使我添加了$timeout函数,希望我能克服执行时间,但我认为情况并非如此。

1 个答案:

答案 0 :(得分:1)

你可以尝试



rootApp.directive('logHeightCategories', ['$timeout', '$compile',
  function($timeout,$compile) {
    return {
      restrict: 'A',
      link: function(scope, element, attrs) {
        scope.prepMaxHeightCat = element.prop('offsetHeight');
        scope.value = 0;
        scope.maxHeightCat = scope.value + scope.prepMaxHeightCat;      
        scope.$watch(attrs.logHeightCategories, function(html) {
          element.html(html);
          $compile(element.contents())(scope);
        });
      }
    };
  }
]);