angularjs - 在 angular.ui 模态中注入(inject) Angular Controller 依赖项的正确方法

标签 angularjs angularjs-scope

以下 angular.ui 模态example显示 modalInstance调用ModalIntanceCtrl稍后将其创建为函数:

var ModalDemoCtrl = function ($scope, $modal, $log) {

  $scope.items = ['item1', 'item2', 'item3'];

  $scope.open = function () {

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

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

var ModalInstanceCtrl = 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('cancel');
  };
};

我有 2 个问题/问题:
  • 文档建议以另一种方式创建 Controller (由于缩小问题),例如:
    myApp.controller('GreetingCtrl', ['$scope', function($scope) { $scope.greeting = 'Hola!'; }]);

  • 但是如果我这样创建 Controller ,我怎么能把它注入(inject)到modalInstance中呢?
  • 我在这里调用的 Controller 不是模态实例 Controller ,而是我的全局 loginCtrl ,这是个问题吗?我应该以某种方式子类化 loginCtrl 还是从 ModalInstanceCtrl 调用它?如果是这样 - 究竟如何?

  • 我会很高兴得到有关这方面的指导和澄清。
    谢谢!

    最佳答案

    您的问题不是很清楚,但是如果您使用模块API声明 Controller ,那么您可以将 Controller 作为字符串提供给模态服务

    myApp.controller('ModalInstanceCtrl', ['$scope', function($scope) { $scope.greeting = 'Hola!'; }]);
    
    controller: 'ModalInstanceCtrl',loginCtrl 也可以这样做如果您想在模态服务中使用它。

    关于angularjs - 在 angular.ui 模态中注入(inject) Angular Controller 依赖项的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19487259/

    相关文章:

    javascript - 更改 ng-view 内容后保留的内存未释放

    angularjs - HAML 中的 Angular 指令语法

    javascript - 有没有办法防止整个 AngularJS Web 应用程序中的退格导航?

    javascript - Angular JS 当前范围是什么?

    javascript - 更改状态时某些参数不会传递值

    angularjs - 新手 AngularJS Controller $scope 无法读取 undef 的属性

    javascript - 隔离作用域无法访问作用域链中更高层的变量

    javascript - 向折线图添加工具提示未显示

    angularjs - Protractor 定位器链接无法找到元素文本

    AngularJS:根据用户是否获得授权使用 angularjs 保护路由?