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