События $route change и $('window').load() в Angularjs

У меня есть директива, в которой я динамически вычисляю высоту каждого li в ng-повторителе, управляемом ajax, нахожу самый высокий, а затем устанавливаю для всех братьев и сестер li ту же высоту, что и самый высокий.

Каждый li имеет вложенный div с тегом img:

<li ng-repeat="t in things">
    <div>
        <img>
        <p>some text and stuff</p>
    </div>
</li>

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

angular.module('directives', [])
    .directive('findHeight', ['$window', function ($window) {
        return {
            link: function (scope, el) {
                $window.on('load', function () {
                   // do my thang...
                });
            }
        }
    });

И это работает... при загрузке... Но когда я меняю маршруты и применяю эту директиву к последующим представлениям, она не срабатывает (поскольку окно уже загружено).

Мой вопрос: я изучил события $route в Angular. но, похоже, мне не на что реагировать, что включает в себя как изменение маршрута , так и содержимое окна, загружаемое при разрешении нового маршрута.

Поэтому вместо window.load я проверяю загрузку изображения. Есть ли что-то, что я упускаю из виду в Angular, поэтому мне не нужно слушать загрузку изображения или это подходящий подход? Думаю, мне интересно, есть ли в Angular встроенные события, которые я могу упустить.

  angular.module('directives', [])
    .directive('findHeight', function () {
        return {
            link: function (scope, el) {
                angular.element('img').on('load', function () {
                   // do my groove thang...
                });
            }
        }
    });

person chrisjordanme    schedule 13.02.2014    source источник


Ответы (1)


Я думаю, вы хотите использовать это событие:

$scope.$on("$routeChangeSuccess", function($currentRoute, $previousRoute) {
});

а не $window.on('load',function() {})

person koolunix    schedule 14.02.2014
comment
Спасибо. Я попробовал «$ routeChangeSuccess», но не получил нужного результата. Я попробую еще раз в отдельном проекте. Мне интересно, может ли что-то еще происходить с моим приложением, что вызывает мою проблему. - person chrisjordanme; 14.02.2014