I need to dynamically change controller of one particular div by clicking some input buttons.
Why it works the first way, but doesn't work the second way if I replace one-element array by controller itself (see code below).
And how to implement such functionality in a better way?
Plnkr with one-element array (works)
index.html
<body ng-app="myApp">
<div ng-controller="MyCtrl">
    Hello, {{name}}!
    <input type="button" value="click me" ng-click="changeCtrl(0)"/>
    <input type="button" value="click me" ng-click="changeCtrl(1)"/>
    <input type="button" value="click me" ng-click="changeCtrl(2)"/>
    <div ng-repeat = "ctrl in curCtrl" ng-controller="ctrl">
        {{ blah }}
    </div>
</div>
</body>
</html>
script.js
var myApp = angular.module('myApp', []);
myApp.controller("MyCtrl", MyCtrl);
function MyCtrl($scope) {
    $scope.name = 'Username';
    $scope.ctrls = [ctrlA, ctrlB, ctrlC];
    $scope.curCtrl = [ctrlA];
    $scope.changeCtrl = function (idx) {
        $scope.curCtrl = [$scope.ctrls[idx]];
    }
}
function ctrlA($scope) {$scope.blah = "One";}
function ctrlB($scope) {$scope.blah = "Two";}
function ctrlC($scope) {$scope.blah = "Three";}
Plnkr with controller instead (doesn't work)
index.html
<body ng-app="myApp">
<div ng-controller="MyCtrl">
    Hello, {{name}}!
    <input type="button" value="click me" ng-click="changeCtrl(0)"/>
    <input type="button" value="click me" ng-click="changeCtrl(1)"/>
    <input type="button" value="click me" ng-click="changeCtrl(2)"/>
    <div ng-controller="curCtrl">
        {{ blah }}
    </div>
</div>
</body>
</html>
script.js
var myApp = angular.module('myApp', []);
myApp.controller("MyCtrl", MyCtrl);
function MyCtrl($scope) {
  $scope.name = 'Username';
  $scope.ctrls = [ctrlA, ctrlB, ctrlC];
  $scope.curCtrl = ctrlA;
  $scope.changeCtrl = function(idx) {
    $scope.curCtrl = $scope.ctrls[idx];
  }
}
function ctrlA($scope) {$scope.blah = "One";}
function ctrlB($scope) {$scope.blah = "Two";}
function ctrlC($scope) {$scope.blah = "Three";}