2015-02-11 109 views
-1

控制器代码:尽快角的javascript:无法访问DOM元素

$scope.items = []; 
$scope.items = [{'name': 'name x', 'id': 'xyz'}, 
            {'name': 'name y', 'id': 'uqh'}]; 

console.log(document.getElementById('xyz')+'<--- Element is created'); 

查看

<div ng-repeat="item in items"> 
    <div id="{{item.id}}"/> 
</div> 

所以在这里,我已经创建的div动态,我想提请每个div中的图表。但我无法访问它。

控制台显示为空。我明白这里出了什么问题。但有人建议我在这种情况下正确的方式。

我知道的另一种方法是像这样绑定函数调用,但随后会调用多次。所以我不能以这种方式继续前进。

<div ng-repeat="item in items"> 
    <div ng-bind="drawInElement(item.id)" id="{{item.id}}"/> 
</div> 
+0

你到底想干什么?您不应该与控制器中的dom进行交互。 – 2015-02-11 10:02:05

+0

请给您的问题添加一些更多的背景请 – swazza85 2015-02-11 10:02:40

+0

好的。我想动态添加一个画布元素,然后绘制。 – 2015-02-11 10:03:45

回答

2

好,我只想建议创建这样的指令:

<div ng-repeat="item in items"> 
    <div draw-my-chart="{{item.id}}"/> 
</div> 

然后在您的JS:

angular.directive('drawMyChart', function() { 
    return { 
    link: function(scope, element, attrs) { 
     // access your element here ... 
    } 
    }; 
})