0
我有多个元素与被叫scrollOffset指令例如传递指令的属性值,以任何控制器
<section id="section1" scrollOffset="100">
...
</section>
<section id="section2" scrollOffset="100">
...
</section>
为了理解起见,我想能够从访问scrollOffset属性的值在属于我的应用程序中任何模块的任何容器中,如果我知道元素ID。
我的第一个问题是如何正确申报指令,因为我已经看到了这样做如
var myScroller = angular.module('scrollOffset', []);
myScroller.directive('scrollOffset', function ($rootScope) {
return function (scope, element, attr) {
var offset = scope.$eval(attr.scrollOffset);
}
});
我宣布包含各种控制器单独的模块的多种方式。我想能够访问这些控制器中的scrollOffset属性
var myControllers = angular.module ('myControllers', ['scrollOffset']);
myControllers.controller('controller1', [ '$scope', '$rootScope', '$routeParams',
function ($scope, $rootScope, $routeParams) {
if ($routeParams.scrollTo != 'undefined') {
// get the target element
var targetEl = document.getElementById ($routeParams.scrollTo);
// I want to fetch the scrollOffset attribute for targetEl here
}
}]);
我是Angular的新手,无法弄清楚这一点。问题的一部分是它看起来像是有多种方式可以解决这个问题。
谢谢。你的解释和实现是有道理的,但是当我测试它时,控制器在指令之前被调用,所以偏移量数组是空的。这听起来是对的吗? – user3279701
我更新了我的答案,使用'$ watch',以便在做任何事情之前确保您有价值。 – dnc253
嗨。我后来意识到,直接从控制器访问元素是不好的做法,并以更加角度的方式重写了我的代码。但是,谢谢您花时间回答我的问题并贡献我的Angular知识! – user3279701