问题总结
我想从模态控制器调用主控制器中存在的getCost函数。
伪代码对此进行了解释。

我正在打开模态对话框,如下所示:

....
//I want to invoke this getCost function from the Modal Controller
//So i pass it via 'resolve'
      $scope.getCost = function() {
            return i*x+y;//calculates and returns some cost
       }

        $modal.open({
             templateUrl: '/html/MyModal.html',
             controller: MyModalCtrl,
             resolve: {
            getCostNow: function () {
                return $scope.getCost;
             }
         }
        });
.....


在MyModalCtrl中,这就像:

var MyModalCtrl = function($scope, $modalInstance, $http, getCostNow) {


 function updateOrder()
  {
     //Trying to invoke getCost function reference here
     //But this does not work.
     var theCurrentCostIs = getCostNow();
  }
}

最佳答案

试试这个(注意scope:$ scope):

$modal.open({
    templateUrl: '/html/MyModal.html',
    controller: MyModalCtrl,
    scope:$scope,
    resolve: {
        getCostNow: function () {
           return $scope.getCost;
        }
    }
});


然后,您可以使用事件侦听器发送事件:

$scope.$emit(name, args);


并在父级中监听事件:

$scope.$on('eventName', function(event, data) { console.log(data); });

09-18 09:17