从模态控制器调用主控制器功能 - AngularJS

时间:2014-06-27 07:46:57

标签: javascript angularjs angularjs-scope

问题摘要
我想从模态控制器调用主控制器中存在的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();
  }
}

1 个答案:

答案 0 :(得分:1)

试试这个(注意范围:$ 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); });