为什么分辨率不能像我在角度带中所期望的那样起作用?

时间:2016-10-18 23:33:21

标签: angularjs angular-strap

我一直试图从ui-angular转变为angular-strap。我首先转向使用bs-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',但是在当前版本中没有看到???

所以我对如何将数据实际注入控制器毫无头绪。有人可以帮忙???谢谢!!!!

1 个答案:

答案 0 :(得分:1)

我确定希望角带的文档更好!! - 然而抱怨并没有多大意义,因为我只使用这个而不是贡献者!

其他人试图让这个工作。我最后做的是调试角度带代码,我学会了:

  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:就在我之前的内容中,但是带有预期的bootstrap完全模态对话框结构。我这样做是为了完全控制模板。

我也没有为上面的Promise注入烦恼,因为我并不真的需要它,我只是添加了它,因为我认为也许返回一个Promise会帮助它起作用。但它不需要。

我还有很多需要学习的东西,但至少现在我看到了我对模态的期望,我怀疑这将有助于其他人开始使用角带。我花了几个小时试图让它工作,并且从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;

}]);