我希望在点击它之后从元素中获取$ index,然后将其传递给$ md.Dialog.show,以显示我尝试做的事情:
<div ng-repeat="picture in card.pictures" style="background-image: url({{picture.url}})" class="user-image" ng-click="showAdvanced($event,$index,card.pictures)"></div>
然后我会
$scope.showAdvanced = function(e,i,pictures) {
$log.log(i);
$scope.pictures = pictures;
$mdDialog.show({
scope: $scope.$new(),
controller: DialogController,
templateUrl: 'user.details.html',
parent: angular.element(document.body),
targetEvent: e,
clickOutsideToClose:true,
fullscreen: false
}).then(function(i){
$('.lightbox-img').eq(i).focus();
});
};
我已设置.lightbox-img
&#39; tabindex="0"
,但它似乎无法通过。
答案 0 :(得分:0)
您可以通过onComplete事件回调将索引添加到DialogController的范围。
https://material.angularjs.org/latest/api/service/ $ mdDialog#mddialog出现-optionsorpreset
此外,将jquery与angularjs结合起来是一种非常糟糕的做法。您应该更好地使用angular.element(document.querySelector())(或document.getElementsByClassName等)。
onComplete事件回调如下所示:
onComplete: function(scope) {scope.index = i};
在你的控制器内你可以做到:
angular.element(document.querySelector('.lightbox-img').eq(i).focus());