2014-04-13 24 views
6

el = document.getElementById (id); aşağıdaki işlevde çalışırken çalışmıyor ... el boş. Tarayıcı hata ayıklamasında, öğeyi aynı kodla açabilirim. Angular.js için yeniyim. Kapsamına ekli bir işlevde normal javascript kullanamaz mıyım?

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

document.getElementById iş komut dosyası çalıştırıldığında dom belki yüklü değil neden doenst. Bu yüzden işlev hiçbir şeyden vazgeçmez. Her neyse: Bunu yaparken hiçbir faydası yoktur. Öğeyi değiştirmek istediğinizde direktifleri açısal olarak kullanabilir veya elemanı açısal modele bağlayabilirsiniz. Kontrol cihazındaki elemanlara erişim kötü bir uygulamadır ve nadiren/hiç ihtiyaç duyulmaz. Sadece ne yapmak istediğini söyle, sana yardım edebiliriz. – Fuzzyma

cevap

12

Bence DOM henüz yüklenmedi. Bu nedenle, DOM tamamen yüklendikten sonra getElementById() öğesinin çalıştırıldığından emin olun. 'Load' olayından sonra başarısız olursanız, bunun nedeni başka bir nedenden kaynaklanır.

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); 
     } 

    });