2014-04-13 20 views
6

el = document.getElementById (id); nie działa, gdy wewnątrz funkcji poniżej ... el ma wartość null. W debugowaniu przeglądarki mogę wyciągnąć element z tym samym kodem. Jestem nowy w Angular.js. Czy nie mogę używać zwykłego javascript w funkcji dołączonej do zakresu?

myappApp.controller('Scroller', function($scope, $location, $anchorScroll) { 
    $scope.scrollTo = function(id) { 
    el = document.getElementById(id); 
    } 
+5

document.getElementById doenst pracy powodują, że dom nie może załadować, gdy skrypt jest wykonywany. To dlatego funkcja niczego nie przywraca. W każdym razie: Nie ma w tym żadnego pożytku. Gdy chcesz zmienić element, możesz użyć dyrektyw kątowych lub powiązać element z modelem kątowym. Dostęp do elementu w kontrolerze jest złą praktyką i rzadko/nigdy nie jest potrzebny. Po prostu powiedz nam, co chcesz robić, a my możemy ci pomóc – Fuzzyma

Odpowiedz

12

Myślę, że DOM jeszcze nie został załadowany. Dlatego upewnij się, że getElementById() działa po całkowitym załadowaniu DOM. Jeśli nie powiedzie się po wywołaniu zdarzenia "load", jest to spowodowane inną przyczyną.

HTML

<body ng-controller="sample"> 
    <h1 id="foo">bar</h1> 
</body> 

JS

var app = angular.module('myApp', []); 

    app.controller('sample', function($scope){ 

     addEventListener('load', load, false); 

     function load(){ 
      var el = document.getElementById("foo"); 
      alert(el); 
     } 

    }); 
Powiązane problemy