为什么innerHTML在angularjs中返回undefined

时间:2015-02-06 12:01:35

标签: javascript html angularjs html5 angularjs-scope

当点击<p></p>标签时,

innerHTML返回undefined,但我期待它的内部html。有什么猜?为什么?

http://plnkr.co/edit/NOLTO95H5GDuG35X9NOA?p=preview

4 个答案:

答案 0 :(得分:1)

因为Angular传递$scope个对象,而不是DOM元素。由于$scope对象没有innerHtml,因此您获得undefined

您可以将模型指定给输入或文本区域,然后将此模型传递给您的函数。这是一个plunker:http://plnkr.co/edit/VjFXacXJMa0PpS364wOb或者,如果你想坚持使用控制器中的DOM来反对Angular的性质,你可以使用$event.target

答案 1 :(得分:1)

您可以传递角度$event

<p ng-click="abc($event)">
    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Voluptas, nemo, numquam, incidunt similique quisquam dolor blanditiis quis veniam at laudantium quibusdam beatae ad ea voluptates impedit molestiae cum modi quam!
</p>

并获取innerHtml

$scope.abc = function(e) {
    alert(e.target.innerHTML);
}

Plunker

答案 2 :(得分:1)

您需要$event.target$event.currentTarget

我希望您使用$event.currentTarget,因为它会为您提供更精确的点击元素。

<强> CODE

$scope.abc = function($event){
  //more precise element tracking will track sub element too using $event.currentTarget
  alert( $event.currentTarget.innerHTML || $event.srcElement.innerHTML); 
  alert($event.target.innerHTML); //element tracking
}

Working Plunkr

有关详细信息,请参阅this answer

答案 3 :(得分:0)

而不是这个,您可以传递$event并获取$event.target这是点击的dom元素

  $scope.abc = function($event){
    alert($event.target.innerHTML);
  }