javascript - Angular - ui-router - 指令 - 获取指令的偏移量/位置

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

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

我有一个指令,我只想获取它的大小/位置或其包含元素的大小/位置。在我的指令(在 ui-router View 中呈现)中,我附加了一个 Controller ,但是当我尝试获取大小时,它始终为零。

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 有关,或者可能与使用指令的 Angular 有关?我猜这是一个时间问题 - 在 Angular 完成 dom 之前尝试获取有关 dom 的信息?任何帮助表示赞赏!

最佳答案

此类与风格相关的例程需要推迟。当 link 运行时,有些事情没有发生(首先,子级的 link precedes 其父级)。通常你必须这样做

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

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

关于javascript - Angular - ui-router - 指令 - 获取指令的偏移量/位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31954414/

相关文章:

javascript - 移动浏览器中的固定地址栏

javascript - 无法为 JavaScript 中的对象变量赋值

angularjs - 在 Angular ui-router 中使用带有 $stateChangeStart toState 和 fromState 的 $state 方法

javascript - 如何更新 Angular2 中的矩阵参数

javascript - 停止动量滚动 ontouchstart ngTouch AngularJS

angularjs - $tooltipProvider 在 Angular 1.4.7+ 时出现错误

javascript - Stripe Payment Element 加载时间慢

javascript - 解析像 2012-11-07T00 :00:00 这样的日期

javascript - Chrome 中是否有用于将光标重新聚焦到控制台内的键盘快捷键?

javascript - Angular 模态返回 promise