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'
如果传入,则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)
正如其他人所说,你可以使用$ 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)