通过 AngularJS 中的路径位置获取控制器

Get controller by path location in AngularJS

我正在用 ui.bootstrap 开发一个简单的模式 window。当我们单击绑定到控制器的某个按钮并启动时,会显示此模态,但模态及其内容绑定到另一个控制器,因此当我们单击时,有必要知道控制器的位置,它将在另一个文件夹中项目的。

例如成像结构如下:

  1. 组件1

    ..... template1.html

    ..... controller1.js

  2. 组件2

    ..... template2.html

    ..... controller2.js

controller1.js负责加载渲染的模态视图,分别与template2.htmlcontroller2.js绑定。所以,在 controller1.js 中我们有这个:

 $scope.open = function (size) {
      var modalInstance = $uibModal.open({
        templateUrl: 'components/component2/template2.html',
        controller: 'components/component2/controller2.js',
        size: size,
        resolve: {
          items: function () {
            return $scope.items;
          }
        }
      });
      modalInstance.result.then(function (selectedItem) {
        $scope.selected = selectedItem;
        $log.debug(selectedItem);
      }, function () {
        $log.info('Modal dismissed at: ' + new Date());
      });
   };

这显然不适用于 controller2.js。正如我们所做的那样 templateUrl,有任何方法可以加载一个控制器,将其路径作为参数传递给 $uibModal.open?

我还没有测试过,但可以这样做:

var modalInstance = $uibModal.open({
        templateUrl: 'components/component2/template2.html',
        controller: 'ModalController',
        size: size,
        resolve: {
          items: function () {
            return $scope.items;
          }
        }
      });

   app.controller('ModalController', function ($scope, $modalInstance) {
      // do some things
   });