在 AngularJS 中按路径位置获取控制器

Get controller by path location in AngularJS

本文关键字:位置 获取 控制器 路径 AngularJS      更新时间:2023-09-26

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

例如,按如下方式对结构进行成像:

  1. 组件1

    .....模板1.html

    .....控制器1.js

  2. 组件2

    .....模板2.html

    .....控制器2.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
   });