Рассмотрим эту директиву angularjs (упрощенно):
define (['some.form', 'lodash'], function (someForm, _) {
return inputForm
.directive('inputForm', ['internalRouting', '$rootScope', function (internalRouting, $rootScope) {
return {
restrict: 'E',
transclude: true,
navButtons: '='
},
link: function ($scope) {
var actionContinue = function () {
// restore the original continue button.
$scope.navButtons[$scope.originalContinueButtonIndex].action = $scope.originalContinueCallback;
};
// Replace the original continue button.
$scope.originalContinueButtonIndex = _.findIndex($scope.navButtons, {ssciType: 'continue'});
$scope.originalContinueCallback = $scope.navButtons[$scope.originalContinueButtonIndex].action;
$scope.navButtons[$scope.originalContinueButtonIndex].action = actionContinue;
}
};
}]);
});
Итак, я вижу, что после открытия директива originalContinueCallback
фактически указывает на новый обратный вызов, что имеет смысл, поскольку, вероятно, копирует ссылку, а неклон, но я не понимаю, почему при нажатии на кнопку три раза она вызывает обратный вызов источника.
Также я не знаю, как правильно скопировать обратный вызов?