Always have a dot in your ng-model - Fixed version
HTML
<script src="https://code.angularjs.org/1.3.1/angular.js"></script>
<div ng-app="testApp">
<div ng-controller="MyController">Input <b>inside</b> ng-switch:
<span ng-switch="show">
<input ng-switch-when="true" type="text" ng-model="person.name" />
</span>
<br/>
<br/>Input <b>outside</b> of ng-switch:
<input type="text" ng-model="person.name" />
<br/>
<br/>Name: <span style="color: red">{{person.name}}</span>
</div>
</div>
<br/><br/>
<b>Fixed version</b><br/>
JavaScript
angular.module('testApp', [])
.controller('MyController', function ($scope) {
$scope.show = true;
$scope.person = {name: 'John Doe'};
})
;