我想我以前做过这件事,但我忘记了怎么做。这就是我想要完成的事情:
在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,
});
};
我也试过html:
<md-card ng-repeat="card in cards" ng-click="showCardDes({{card.link}})">
在我的Angular脚本中:
$scope.showCardDes = function(url) {
$mdDialog.show({
controller: DialogController,
templateUrl: url,
});
};
我记得当我在设置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>
在我使用的Angular Script中:
$scope.showCardDes = function(event) {
var tempUrl = $(event.target).attr('data-link');
$mdDialog.show({
controller: DialogController,
templateUrl: tempUrl,
});
};
这将返回:
未捕获的TypeError:无法读取未定义的属性'hasAttribute'
答案 0 :(得分: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,
});
};
答案 1 :(得分:9)
正如其他人所说,你可以为此使用$ event,但在你的情况下,这不是一种有角度的方式。您应该将模型作为参数传递并读取其属性;
<md-card ng-repeat="card in cards" ng-click="showCardDes(card)">
并在您的控制器中;
$scope.showCardDes = function(card) {
var tempUrl = card.link;
$mdDialog.show({
controller: DialogController,
templateUrl: tempUrl,
});
};
答案 2 :(得分:1)
您的处理程序的ngClick
指令passes a named $event
property,您可以使用它来访问&#34;这个&#34; (又称事件目标)。
<md-card ng-click="showCardDes($event)" ...>
然后您的控制器可能如下所示:
$scope.showCardDes = function(event) {
var tempUrl = $(event.target).attr('data-link');
$mdDialog.show({
controller: DialogController,
templateUrl: tempUrl,
});
};