为什么 innerHTML returns 在 angularjs 中未定义

Why does innerHTML returns undefined in angularjs

innerHTML 在单击 <p></p> 标签时返回未定义,但我希望它在 html 内部。猜猜为什么?

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

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

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

除此之外,您可以传递 $event 并获取 $event.target,这是单击的 dom 元素

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

你可以通过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

您需要 $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
}

Working Plunkr

参考 this answer 了解更多信息。