如何在将mdDialog.show传递给它的同时运行一个函数?

时间:2016-10-12 14:39:30

标签: angularjs

我希望在点击它之后从元素中获取$ 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",但它似乎无法通过。

1 个答案:

答案 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());