2016-10-12 39 views
0

我想點擊它後得到一個元素的$索引,然後將它傳遞到$ 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-imgtabindex="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()); 
相關問題