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