当前位置: 首页 > 面试题库 >

在angular.ui模态中注入角度控制器依赖项的正确方法

公冶鸣
2023-03-14
问题内容

以下angular.ui模态示例显示了modalInstance调用a
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个问题/问题:

  1. 文档建议以其他方式(由于缩小问题)创建控制器,例如:

myApp.controller('GreetingCtrl', ['$scope', function($scope) { $scope.greeting = 'Hola!'; }]);

但是,如果我像这样创建控制器,如何将其注入modalInstance?

  1. 我在这里调用的控制器不是Modal Instance控制器,而是我的global loginCtrl,这是问题吗?我应该以某种方式继承loginCtrl还是从ModalInstanceCtrl调用它?如果是的话-究竟如何?

我很高兴为此提供指导和澄清。谢谢!


问题答案:

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

myApp.controller('ModalInstanceCtrl', ['$scope', function($scope) { $scope.greeting = 'Hola!'; }]);

controller: 'ModalInstanceCtrl',

loginCtrl如果要在模态服务中使用它,可以执行相同的操作。



 类似资料:
  • 问题内容: 我仍然是Angularjs的新手。我想在控制器中动态注入服务(我创建的)的依赖项。 但是,当我对具有依赖项的服务进行编码时,出现此错误: 错误:未知提供程序:$ windowProvider <-$ window <-base64 这是控制器的代码。 此代码有效: 此代码不起作用: 另一个问题是服务与控制器位于同一模块中。如果模块具有依赖项,则无法使用(我的模块配置中具有$ route

  • 有没有可能使控制器依赖于他们的服务,而不是通过使用服务容器,而是通过纯粹的构造函数依赖注入? 我希望以这种方式编写控制器: 不幸的是,正如我所看到的,Symfony ControllerResolver不通过ServiceContainer而是通过简单的调用创建新的控制器实例。

  • 我已经使用GoogleGuice几个月了。我对它很满意,但似乎我用错了。我创造了很多辅助注射,有时还有两个注射器。 因此,我想了解这里的一般原则。 是否应该为连接主类所有内容的所有应用程序配备一个喷油器? 最佳实践是关于从应用程序一开始就尝试在构造函数中注入大量内容吗?(我看到了测试的优势) 我的主要问题是,有时我觉得某些对象组的创建属于某个组件。有必要封装它吗?你会如何处理? 当您拥有一个重要的

  • 此时,我正在轻松地将东西注入控制器,在某些情况下构建自己的ResolversServices类。生活是美好的。 我不知道如何让框架自动注入到非控制器类中。工作原理是让框架自动注入我的控制器,这实际上是我项目的配置: 我在想我是否能为自己的课程做同样的事情。当我模仿控制器时,我假设我很接近,就像这样: 我想我失败的地方是当我这样叫它的时候: 我跟踪这个的问题实际上是所有关于DI的内容都是在控制器级别

  • 问题内容: 我在AngularJS应用程序中为i18n 使用angular-translate。 对于每个应用程序视图,都有一个专用的控制器。在下面的控制器中,我设置了要显示为页面标题的值。 码 的HTML 的JavaScript 我正在使用angular-translate-loader-url扩展名加载翻译文件。 问题 在初始页面加载时,将显示翻译键,而不是该键的翻译。翻译是,但我看到了。 第

  • 问题内容: -在角度,我们可以注入到功能 我想将我的服务注入其中 我确定服务定义正确,但是当我注入 它仍然说。 你知道为什么吗? 问题答案: 在“ 模块”页面的“模块加载和依赖项”部分: 配置块 -在提供者注册和配置阶段执行。只有提供者和常量可以注入配置块中。这是为了防止在服务完全配置之前意外实例化服务。 运行块 -创建注射器后执行,并用于启动应用程序。只能将实例和常量注入运行块中。这是为了防止在