Подтвердить что ты не робот

Angular -ui modal, отправка данных в модальный контроллер из $http

Я использую angular -ui modal директиву http://angular-ui.github.io/bootstrap/.

Я следовал примеру из приведенной выше ссылки.

Это мои данные, которые я хочу отправить с моего контроллера:

ProductsFactory.getOneProduct().then(function(d){
  $scope.selectedProduct = d.data;
});

$scope.open = function () {
  var modalInstance = $modal.open({
    controller: 'ModalInstanceCtrl',
    templateUrl: 'productDetail.html',
    resolve: {
      items: function () {
        return $scope.selectedProduct;
      }
    }
  });
};

И это мой модальный контроллер:

var ModalInstanceCtrl = function ($scope, $modalInstance, selectedProduct) {

  console.log(selectedProduct);

  $scope.ok = function () {
    $modalInstance.close();
  };

  $scope.cancel = function () {
    $modalInstance.dismiss('cancel');
  };
};

Проблема в том, что я не могу получить доступ к "выбранному продукту" в моем модульном контроллере. Я знаю, что причина заключается в том, чтобы сделать ширину асинхронного вызова, и это может быть только доступ из графического интерфейса. Но как я могу решить эту проблему? Как отправить "$ scope.selectedProduct" в мой ModalInstanceCtrl?

4b9b3361

Ответ 1

Вы можете попробовать что-то вроде

$scope.open = function () {
  var modalInstance = $modal.open({
    controller: 'ModalInstanceCtrl',
    templateUrl: 'productDetail.html',
    resolve: {
      items: function () {
        return ProductsFactory.getOneProduct();
      }
    }
  });
};

В принципе, ваш $modal может пообещать, поэтому почему бы не использовать его. Теперь объект должен быть доступен на контроллере, когда обещание будет разрешено. ModalInstanceCtrl должен быть

var ModalInstanceCtrl = function ($scope, $modalInstance, items) {

так как вы разрешаете свойство items не свойство selectedProduct.