Angularjs 如何从模型控制器调用父方法

Angularjs 如何从模型控制器调用父方法,angularjs,angular-ui-bootstrap,Angularjs,Angular Ui Bootstrap,我有一个名为“contractController”的控制器 contractController包含一个方法save() contractController打开一个名为“PopUpcontroller的控制器的模型窗口 从PopUpcontroller我想调用contractController上的save方法 尝试调用保存方法,如$parent,但没有任何效果 请告知。如果两个控制器嵌套,以便: <div ng-controller="contractController">

我有一个名为“contractController”的控制器

contractController包含一个方法save()

contractController打开一个名为“PopUpcontroller的控制器的模型窗口

PopUpcontroller我想调用contractController上的save方法

尝试调用保存方法,如
$parent
,但没有任何效果


请告知。

如果两个控制器嵌套,以便:

<div ng-controller="contractController">
   <div ng-controller="PopUpcontroller">
   </div>
</Div>

您只需在popUpController上调用$scope.save(),它就会自动使用该方法查找父对象(直到$rootScope)


如果它们不是嵌套的,则应使用服务来执行控制器之间的通信

如果要保留其原型,则需要确保弹出窗口是从
contractController
的范围创建的。您是如何创建弹出窗口的

在Angular UI Boostrap中类似这样的东西(我不使用它,但API应该接受它):


如果您使用的是Angular UI引导(),那么在调用$modal.open()时使用“resolve”属性

无论您添加了什么来解析,只要您将其连接为依赖项注入,它都是可用的

在他们页面上的示例中,“item”如下所示,因为它连接在“resolve”中

决心:

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


函数PopUpcontroller($scope、$rootScope、$modal、authen、contractService){…PopUpcontroller.$inject=['$scope','$rootScope','$modal','authen','contractService'];看起来您正在使用Angular UI引导程序的
$modal
,对吗?您需要将控制器的范围传递到其
范围
选项中。
var modalInstance = $modal.open({
  templateUrl: 'myModalContent.html',
  controller: 'ModalInstanceCtrl',
  size: size,
  resolve: {
    items: function () {
      return $scope.items;
    }
  }
});
angular.module('ui.bootstrap.demo').controller('ModalInstanceCtrl', function ($scope, $modalInstance, items) {