如何通过ng-click传递"this"?

Aer*_*ang 4 javascript angularjs

我想我以前做过这个,但我忘记了怎么做.这是我想要完成的:

在html中,我有这个设置:

<md-card ng-repeat="card in cards" data-link="{{card.link}}" ng-click="showCardDes(this)">

在我的Angular脚本中,我设置了它:

  $scope.showCardDes = function(e) {
    var tempUrl = $(e).attr('data-link');
    $mdDialog.show({
      controller: DialogController,
      templateUrl: tempUrl,
    });
  };
Run Code Online (Sandbox Code Playgroud)

我也尝试过html:

<md-card ng-repeat="card in cards" ng-click="showCardDes({{card.link}})">

在我的Angular脚本中:

  $scope.showCardDes = function(url) {
    $mdDialog.show({
      controller: DialogController,
      templateUrl: url,
    });
  };
Run Code Online (Sandbox Code Playgroud)

我记得当我在设置ng-model时涉及到某些事情之前我做了它,但我真的无法在线或在我的硬盘中找到文档. >.<

我忘了提到我也试过这个:

<md-card ng-repeat="card in cards" class="noselect hietim {{card.size}}" data-link="{{card.link}}" ng-click="showCardDes($event)" md-ink-ripple>

在我的角色脚本中,我使用了:

  $scope.showCardDes = function(event) {
    var tempUrl = $(event.target).attr('data-link');
    $mdDialog.show({
      controller: DialogController,
      templateUrl: tempUrl,
    });
  };
Run Code Online (Sandbox Code Playgroud)

这将返回:

未捕获的TypeError:无法读取未定义的属性'hasAttribute'

Jbw*_*ms1 9

如果传入,则ng-click="showCardDes($event)"可以访问$event对象中的元素.

所以在你的JavaScript中,它看起来像这样:

 $scope.showCardDes = function($event) {
    var btn = $event.currentTarget;
    var tempUrl = $(btn).attr('data-link');
    $mdDialog.show({
      controller: DialogController,
      templateUrl: tempUrl,
    });
  };
Run Code Online (Sandbox Code Playgroud)


Onu*_*pal 9

正如其他人所说,你可以使用$ event来做这件事,但在你的情况下,这不是一个有角度的方式.您应该将模型作为参数传递并读取其属性;

<md-card ng-repeat="card in cards" ng-click="showCardDes(card)">
Run Code Online (Sandbox Code Playgroud)

在你的控制器;

$scope.showCardDes = function(card) {
  var tempUrl = card.link;
  $mdDialog.show({
    controller: DialogController,
    templateUrl: tempUrl,
  });
};
Run Code Online (Sandbox Code Playgroud)

  • 正如我所说"在你的情况下"并且从未说过$ event是不可接受的.但是当可以通过模型操作完成更改时,应该以这种方式完成.另一种方法是更多的jQuery方式. (2认同)