Edit in JSFiddle

var app = angular.module('app', []);
app.controller('Ctrl', function ($scope) {
    //array of edited fields (optional)
    $scope.focusField1 = false;
    $scope.focusField2 = false;

    //handle method for field1 blur
    $scope.doneEditing1 = function () {
        $scope.countedValue = 'Blur from field1:  ' + $scope.value1 + ' * ' + $scope.value2 + ' = ' + $scope.value1 * $scope.value2;
    }
    //handle method for field2 blur
    $scope.doneEditing2 = function () {
        $scope.countedValue = 'Blur from field2:  ' + $scope.value2 + ' * ' + $scope.value1 + ' = ' + $scope.value1 * $scope.value2;
    }

    $scope.value1 = 1;
    $scope.value2 = 2;
    $scope.countedValue = 'After blur on field change to field1 * field2';
});
//focus directive
app.directive('myFocus', function () {
    return {
        restrict: 'A',
        link: function (scope, element, attr) {
            scope.$watch(attr.myFocus, function (n, o) {
                if (n != 0 && n) {
                    element[0].focus();
                }
            });
        }
    };
});
//blur directive
app.directive('myBlur', function () {
    return {
        restrict: 'A',
        link: function (scope, element, attr) {
            element.bind('blur', function () {
                //apply scope (attributes)
                scope.$apply(attr.myBlur);
                //return scope value for focusing to false
                scope.$eval(attr.myFocus + '=false');
            });
        }
    };
});