#javascript #angularjs #angularjs-scope
#javascript #angularjs #angularjs-область
Вопрос:
Краткое описание проблемы
Я хочу вызвать функцию 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:
Попробуйте это (обратите внимание на область действия: $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); });