【发布时间】:2015-11-27 17:30:01
【问题描述】:
问题
if(scope.$last)
{
//get container height
}
我一直认为这是获取容器高度的正确方法,该容器内部具有 ng-repeated 元素。我已经得出结论,这不是正确的方法。
看看我的指令:
AdminApp.directive("ngExpander", function($rootScope, $timeout){
var GetProperContainerHeight = function(container, content){
var container = $(container);
var content = $(content);
container.height(content.outerHeight());
return container.height();
}
return{
restrict:'A',
link:function(scope, elem, attr){
if(scope.$last){
$timeout(function(){
$rootScope.ContainerHeight = GetProperContainerHeight(attr.container, attr.content);
}, 500);
}
}
}
});
如果我没有添加 $timeout,该指令将无法正常工作,因为它不会返回正确的容器高度(我当时获得的一些负值)。
背景
指令在这里起作用:
<div class="SwitchContent" data-ng-show="ShowContent" id="testId">
<div class="user-list-element"
data-ng-repeat="user in UserList | filter:userFilter track by $index"
data-ng-click="GetUserDetails(user);"
data-ng-expander
data-container="div.UserPanel"
data-content="div[id=testId]">
<i class="fa fa-user fa-lg padding-r-10"></i> {{ user.name + ' ' + user.surname }}
</div>
</div>
如何在没有 $timeout 的情况下获得正确的结果?
【问题讨论】:
标签: javascript jquery angularjs