2014-04-13 15 views
6

el = document.getElementById (id); không hoạt động khi bên trong hàm bên dưới ... el là rỗng. Trong trình gỡ rối trình duyệt, tôi có thể kéo phần tử có cùng mã. Tôi mới sử dụng Angular.js. Tôi có thể không sử dụng javascript thông thường trong một chức năng gắn liền với phạm vi không?

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

document.getElementById doenst việc làm cho dom được có lẽ không được nạp khi kịch bản được thực thi. Thats lý do tại sao chức năng retuns không có gì. Dù sao: Không có sử dụng trong việc đó. Khi bạn muốn thay đổi phần tử, bạn có thể sử dụng các chỉ thị từ góc cạnh hoặc liên kết phần tử với một mô hình góc. Việc truy cập phần tử trong bộ điều khiển là thực hành không tốt và hiếm khi/không bao giờ cần thiết. Chỉ cần cho chúng tôi biết bạn muốn làm gì và chúng tôi có thể giúp bạn – Fuzzyma

Trả lời

12

Tôi nghĩ DOM chưa được tải. Vì vậy, hãy đảm bảo getElementById() chạy sau khi DOM được tải hoàn toàn. Nếu bạn thất bại sau khi sự kiện 'tải' kích hoạt, điều này là do một nguyên nhân khác.

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

    }); 
Các vấn đề liên quan