angular - ui-router - directive - 获取指令的偏移量/位置

时间:2015-08-12 01:03:12

标签: javascript angularjs angular-ui-router angularjs-controller angular-directive

我在使用angular和ui-router的许多项目中遇到过这个问题。

我有一个指令,我只想获得它的大小/位置或其包含元素的大小/位置。在我的指令中,它是在ui-router视图中呈现的,我附加了一个控制器,当我尝试获取大小时,它总是为零。

element.position() -> Object {top: 0, left: 0}
element.offset() -> Object {top: 0, left: 0}

在我的指令中我有这个:

templateUrl: 'some-html-file',
link: function (scope, elem, attrs, someController) {
    someController.init(elem);
}
someController

中的

this.init = function (element) {
     $scope.element = element;
     console.log($scope.element.position());
     console.log($scope.element.offset());
}

我不确定如何获得指令的位置和大小。有什么想法吗?这与ui-router有关,或者这与使用指令的角度有关?我猜它是一个时间问题 - 尝试在dom完成角度之前得到关于dom的信息?任何帮助赞赏!

1 个答案:

答案 0 :(得分:1)

这种与风格相关的例程需要推迟。有些事情在link运行时并没有发生(首先,孩子的父母link precedes。通常你必须这样做

link: function (scope, elem, attrs, someController) {
    $timeout(function () {
        someController.init(elem);
    });
}

同样,其他指令会将某些内容推迟到下一个摘要中,有时您需要$timeout非零延迟才能使其正常工作。