Angularjs中的$ route change events vs. $('window')。load()

时间:2014-02-13 22:41:21

标签: angularjs angularjs-routing

我有一个指令,我在动态计算ajax驱动的ng-repeater中每个li的高度,找到最高的那个,然后设置所有兄弟li的与最高的高度相同。

每个li都有一个带有img标记的嵌套div:

<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...
                });
            }
        }
    });

这有效...... 加载 ...但是当我更改路由并将此指令应用于后续视图时,它不会触发(因为窗口已经加载)。

我的问题:我已经研究过Angular的$route events,但似乎没有什么可以让我做出反应,包括路线更改新路线结算时加载的窗口内容。

所以不是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...
                });
            }
        }
    });

1 个答案:

答案 0 :(得分:0)

我想你想要使用这个事件:

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

而不是$ window.on('load',function(){ })