我有一个指令,我在动态计算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...
});
}
}
});
答案 0 :(得分:0)
我想你想要使用这个事件:
$scope.$on("$routeChangeSuccess", function($currentRoute, $previousRoute) {
});
而不是$ window.on('load',function(){ })