2016-01-22 2 views
0

У меня есть состояние, которое может иметь переменную высоту (в зависимости от содержимого). Я хочу установить эту высоту как атрибут css для моего фона.Получить высоту элемента в ui-view

Но у меня возникли проблемы с получением правильной высоты, потому что код запускается перед загрузкой содержимого в состояние.

У меня есть такое состояние,

$stateProvider 
    .state('home.suggestions', { 
    url: '', 
    views: { 
     "suggestions": { 
     templateUrl: '../assets/angular-app/templates/_suggestions.html', 
     controller: function(){ 
      showHeight = $('.suggestions-container-wrapper').outerHeight(); 
      console.log(showHeight) 
     } 
     }, 

    }, 
    }) 

Но она всегда возвращает 175 (высота элемента, прежде чем он загружает ng-repeat содержание.

Как запустить код после того, как все звонки сделано?

+0

Я бы, вероятно, создал для этого директиву и разместил ее на верхнем уровне вашего шаблона – aw04

ответ

0

Просто нашел простое решение. Но ng-init после нг-повтора элемента, то он запускает функцию, когда она получает triggerd.

https://stackoverflow.com/a/24817862/848706

%div{"ng-init" => "setHeight()"} 

контроллер,

$scope.setHeight = function(){ 
    $timeout(function(){ 
     showHeight = $('.suggestions-container-wrapper').outerHeight(); 
     console.log(showHeight) 
    }, 0); 

} 
0

Отъезд документы на $viewContentLoaded. Вы могли бы быть в состоянии сделать:

controller: function(){ 
    $scope.$on('$viewContentLoaded', function(){ 
     showHeight = $('.suggestions-container-wrapper').outerHeight(); 
     console.log(showHeight) 
    }); 
} 

Here также еще один пост, который обсуждает его.

Смежные вопросы