【问题标题】:AngularJS get ng-click source elementAngularJS 获取 ng-click 源元素
【发布时间】:2016-10-29 10:51:15
【问题描述】:

我正在制作一个 javascript 日历,我希望能够在我点击某一天时调用 ng-click。目前,我的 ng-click 功能正在工作,但我无法将点击的元素附加到它:

var dateDiv = document.createElement('div');
dateDiv.setAttribute('ng-click', 'getTimeTables(' + fullDate + ', this);');
dateDiv.className += ' today';
$compile(dateDiv)($scope);

还尝试用 angular 的 $event 替换它,但我无法让它工作,或者我不知道如何,如 $($event.currentTarget).addClass('newclass');似乎什么都没做。

【问题讨论】:

  • 你试过了吗?将 $event 传递给函数:getTimeTables(' + fullDate + ', $event)。并像这样添加类:$(event.target).addClass();
  • 你有通过dateDiv引用的元素,为什么要得到它?
  • @Maximus 如果我执行 dateDiv.setAttribute('ng-click', 'getTimeTables(' + fullDateObject + ', ' + dateDiv + ');'); 则会出现角度错误跨度>
  • @Xabi,请参阅my answer,了解您想要的方式。

标签: javascript jquery angularjs events this


【解决方案1】:

您可以通过$event.target访问该元素

var dateDiv = document.createElement('div');
dateDiv.setAttribute('ng-click', 'getTimeTables(' + fullDate + ', $event);');
dateDiv.className += ' today';
$compile(dateDiv)($scope);

getTimeTables里面:

$scope.getTimeTables = function(fullDate, $event) {
  $($event.target).addClass('newclass');
}

【讨论】:

  • 不客气)但是,您可以重新考虑您的方法并在指令中使用对元素的引用而不通过回调传递它
猜你喜欢
  • 2014-05-31
  • 2016-04-01
  • 1970-01-01
  • 2014-01-15
  • 1970-01-01
  • 2014-10-05
  • 2017-04-18
  • 2016-10-28
  • 2023-03-31
相关资源
最近更新 更多