0

我在这里查看$modal 服务。当用户单击删除按钮时,我正在尝试实现确认对话框...

现在我有:

'use strict';

angular.module('dashboard.build').controller('BuildCtrl', ['$scope', '$modal', 'BuildSrvc', function($scope, $modal, BuildSrvc) {
  BuildSrvc.refreshBuilds(function(builds) {
    $scope.builds = builds;
  });

  $scope.deployBuild = function(build) {
  }

  $scope.deleteBuild = function(build) {
    var modalInstance = $modal.open({
      templateUrl: 'html/buildDelete.html',
      controller: 'buildDeleteCtrl',
      resolve: {
        items: ['Delete', 'Cancel']
      }
    });

    modalInstance.result.then(function (selectedItem) {
      $scope.selected = selectedItem;
    }, function () {
      $log.info('Modal dismissed at: ' + new Date());
    });
  }
}]);


angular.module('dashboard.build').controller('buildDeleteCtrl', ['$scope', '$modalInstance', 'data', function($scope, $modalInstance, items) {
  $scope.items = items;
  $scope.selected = {
    item: $scope.items[0]
  };

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

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

当我尝试单击删除按钮时,$scope.deleteBuild会调用但我收到错误:Argument 'fn' is not a function, got string. 不太清楚发生了什么,因为我还在学习。有关如何纠正此问题的任何指示?

4

1 回答 1

1

在您的模态解析中,您有:

  resolve: {
    items: ['Delete', 'Cancel']
  }

'items' 期望函数成功返回。这与承诺(可能)有关,我目前无法解释,但要修复您的错误,请尝试以下操作:

resolve: {
    items: function () {
        return ['Delete','Cancel'];
    }
}
于 2013-12-02T18:51:04.453 回答