2016-10-12 9 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

また、angularjsでjqueryのを組み合わせることが本当に悪い習慣です。あなたはangle.element(document.querySelector())やdocument.getElementsByClassNameなどの方がよいでしょう。

onCompleteのイベントコールバックは、次のようになります。

onComplete: function(scope) {scope.index = i}; 

そして、あなたのコントローラ内のあなたが行うことができます。

angular.element(document.querySelector('.lightbox-img').eq(i).focus()); 
関連する問題