为什么innerHTML在angularjs中返回undefined

Why does innerHTML returns undefined in angularjs

本文关键字:返回 undefined angularjs innerHTML 为什么      更新时间:2023-09-26

innerHTML在单击<p></p>标记时返回undefined,但我希望它在html内部。你猜为什么?

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

您可以通过angular的$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

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

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

您需要$event.target$event.currentTarget

我认为你应该使用$event.currentTarget,因为它会在你点击的地方给你更精确的元素。

代码

$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
}

工作Plunkr

请参阅此答案以了解更多信息。

您可以传递$event并获得$event.target,这是单击的dom元素

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