(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>