$parent実際、これを直接使用することは、ディレクティブを定義する方法として推奨される方法ではないと思います。実際には、親コントローラーから呼び出すことができる関数に目に見える依存関係がないため、それらを再利用するのが少し難しくなります。
なぜこれが必要なのか実際のユースケースはわかりませんが、control何度か使用し、一般的な動作を定義する一連の属性をコピーして貼り付けたくないと思います。
この場合、もう少し他のアプローチをお勧めします。その動作を定義するディレクティブコンテナを追加すると、制御にはこのディレクティブが依存関係として必要になります。
myApp.directive('controlBehavior', function() {
    return {
        restrict: 'E',
        scope: {
            modifyfunc: '&'
        },        
        controller: function($scope, $timeout) {
            this.modifyfunc = $scope.modifyfunc;
        }
    };
});
myApp.directive('control', function() {
    return {
        restrict: 'E',
        require: '^controlBehavior',
        replace: true,
        scope: {
            title: "@"
        },
        template : '<div>{{title}}<button ng-click="edit()">Edit</button></div>',
        link: function(scope, element, attr, behavior) {            
            scope.edit = behavior.modifyfunc;   
        }            
    }
});
このアプローチを示すためのフィドルは次のとおりです。http://jsfiddle.net/7EvpZ/4/