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

时间:2014-11-04 11:05:07

标签: angularjs angular-ui-bootstrap

我有一个名为" contractController"

的控制器

contractController 包含方法 save()

contractController 打开一个模型窗口,控制器名为" PopUpcontroller "

来自 PopUpcontroller 我想在 contractController上调用save方法

尝试调用$parent之类的保存方法,但没有任何作用。

请建议。

3 个答案:

答案 0 :(得分:1)

如果嵌套了两个控制器,那么:

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

你可以在popUpController上调用$ scope.save(),它会自动向上找到使用该方法的父级(直到$ rootScope)。

如果它们没有嵌套,你应该使用服务来执行控制器之间的通信

答案 1 :(得分:1)

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

Angular UI Boostrap中的类似内容(我不会使用它,但API应该接受它):

$modal.open({
    scope: $scope,
    /* ... other opts */
});

答案 2 :(得分:1)

如果您正在使用Angular UI Bootstrap(http://angular-ui.github.io/bootstrap/),那么,请使用&#34; resolve&#34;调用$ modal.open()时的属性。

无论你添加什么来解决,如果你把它作为一个依赖注入挂钩,它将是可用的。

在他们页面上的示例中,&#34;项目&#34;可以通过以下方式获得,因为它已连接到&#34;解决&#34;。

消退:

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) {