Edit in JSFiddle

(function(){
    var app = angular.module('app', []);
    
    var factory = function() {
    }

    var FirstController = function($log, $scope) {
        var self = this;
        
        $scope.friends = [
            {name:'John', age:25, gender:'boy'},
            {name:'Jessie', age:30, gender:'girl'},
            {name:'Johanna', age:28, gender:'girl'},
            {name:'Joy', age:15, gender:'girl'},
            {name:'Mary', age:28, gender:'girl'},
            {name:'Peter', age:95, gender:'boy'},
            {name:'Sebastian', age:50, gender:'boy'},
            {name:'Erika', age:27, gender:'girl'},
            {name:'Patrick', age:40, gender:'boy'},
            {name:'Samantha', age:60, gender:'girl'}
      ];
        
        $log.log('firstController');
        
        self.onClick = function(friend) {
            $log.log(friend.name);
        }
    }
    
    FirstController.$inject = ['$log','$scope'];
    
    var SecondController = function($scope, $controller, $log) {
        var self = this;
        
        $log.log('firstController');
        
        angular.extend(self, $controller('FirstController', {$scope:$scope}));
        
    }
    
    SecondController.$inject = ['$scope', '$controller', '$log'];
    
    app.controller('FirstController', FirstController);
    app.controller('SecondController',SecondController);
})();
<div ng-app="app">
    <div ng-controller="SecondController as ctrl">
        <input ng-model="search">
        <ul>
            <li ng-repeat="friend in friends | filter:search" ng-click="ctrl.onClick(friend)">{{friend.name}}</li>
        </ul>
    </div>
</div>
</style> <!-- Ugly Hack to make remote files preload in jsFiddle --> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js"></script>
<style>