Почему resolve не работает так, как я ожидаю в angular-strap?

#angularjs #angular-strap

#angularjs #angular-strap

Вопрос:

Я пытался перейти от ui-angular к angular-strap. Сначала я перешел на использование bs-tooltip вместо tooltip. Эта часть работает нормально. Затем я попытался изменить свои модальности, и здесь я застрял!!! Я пытался ввести свои данные в контроллер следующим образом:

 var myModal = $modal({
templateContent: 'addTask.html',
controller: 'ModalInstanceCtrl2',
show: false,
resolve: {
    function () {
      return {
        data: new Promise(function (resolve, reject) {
          resolve({
            task: newTask,
            getStar: $scope.getStar,
            setPriority: userCondition.setTaskPriority,
            finish: function(arg) {
              console.log(arg);
            }
          }); 
        })
      };
    }
  }
});

myModal.$promise.then(function() {
  myModal.show();
});
  

где находится мой контроллер ModalInstanceContrl2 :

 angular.module('...')
 .controller('ModalInstanceCtrl2', ['$scope', '$modal', 'data',
    function($scope, $modal, data) {

      console.log(data);

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

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

      $scope.data = data;

   }]);
  

Тем не менее, независимо от того, как я, кажется, манипулирую этим «разрешением», я всегда вижу:

 Error: [$injector:unpr] Unknown provider: dataProvider <- data <- ModalInstanceCtrl2
  

И единственная модель для этого, которую я понимаю, исходит от ui-angular. Итак, несмотря на то, что angular-strap, похоже, говорит о том, что проверил код для распознавания ‘resolve’, in не видит, чтобы он был в текущей версии???

Итак, я понятия не имею, как на самом деле вводить данные в контроллер. Может кто-нибудь помочь??? Спасибо!!!!

Ответ №1:

Я уверен, что хотелось бы, чтобы документы для angular-strap были лучше!! — Тем не менее, нет особого смысла жаловаться, поскольку я использую только это, а не участник!

Для других, пытающихся заставить это работать. Что я сделал в итоге, так это отладил код angular-strap, и я научился делать:

   var myModal = $modal({
    templateUrl: 'addTaskOld.html',
    controller: 'ModalInstanceCtrl2',
    show: false,
    resolve: {
      data: function () {
        return {
          task: newTask,
          getStar: $scope.getStar,
          setPriority: userCondition.setTaskPriority,
          finish: function (arg) {
            console.log(arg);
          }
        };
      }
    }
  });
  

где мой templateUrl: — это именно то, что было в моем более раннем контенте, но с ожидаемой загрузочной полностью модальной диалоговой структурой. Я сделал это, чтобы получить полный контроль над шаблоном.

Я также не стал заморачиваться с внедрением обещания сверху, поскольку оно мне действительно не было нужно, я добавил его только потому, что подумал, что, возможно, возврат обещания поможет ему функционировать. Но это было не нужно.

Мне еще многому предстоит научиться, но, по крайней мере, теперь я вижу, чего я ожидаю в своем modal, и я подозреваю, что это поможет другим начать работать с angular-strap. Я потратил несколько часов, пытаясь заставить это работать, и это немного сложнее из ui-angular, поскольку стиль здесь ориентирован на атрибуты, а не на элементы.

Это должно быть прямо отсюда.

Спасибо тем, кто рассмотрел этот вопрос!

Обратите внимание, что мне также нужно было немного изменить modalInstanceCtrl2, поскольку я не вызывал правильные методы:

 .controller('ModalInstanceCtrl2', ['$scope', '$modal', 'data',
  function($scope, $modal, data) {

  $scope.ok = function () {
    data.finish(data);
    $scope.$hide();
  };

  $scope.cancel = function () {
    $scope.$hide();
  };

  $scope.data = data;

}]);