(function(){

function Cidade(estado, nome) {
    this.estado = estado;
    this.nome = nome;
}

function Estado(uf, nome) {
    this.uf = uf;
    this.nome = nome;
}

angular.module('appsimples', [])
.controller('HomeController', function($scope) {
    
    function encontrarEstado(uf) {
        for(var i = 0; i < $scope.estados.length; i++) {
            if ($scope.estados[i].uf == uf) {
                return $scope.estados[i];
            }
        }
        return null;
    }
    
    $scope.estados = [
        new Estado('TO', 'Tocantins'),
        new Estado('SP', 'São Paulo'),
        new Estado('MG', 'Minas Gerais')
        ];
        
    $scope.cidades = [
        new Cidade(encontrarEstado('TO'), 'Araguaína'),
        new Cidade(encontrarEstado('TO'), 'Gurupi'),
        new Cidade(encontrarEstado('TO'), 'Palmas'),
        new Cidade(encontrarEstado('TO'), 'Porto Nacional'),
        new Cidade(encontrarEstado('TO'), 'Paraíso do Tocantins'),
        new Cidade(encontrarEstado('SP'), 'São Paulo'),
        new Cidade(encontrarEstado('MG'), 'Belo Horizonte')];
        
    $scope.salvar = function(cidade) {
        if ($scope.form.$valid) {
            $scope.cidades.push(angular.copy(cidade));
            $scope.form.$setPristine();
            $scope.cidade = {};
        }
    }
});    
    
})();
<!DOCTYPE html>
<html lang="pt-br" ng-app="appsimples">

  <head>
    <meta charset="utf-8" />
    <title>App Simples</title>
    <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" />
    <link rel="stylesheet" href="style.css" />

    <script>document.write('<base href="' + document.location + '" />');</script>
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.6/angular.min.js"></script>

    <script src="app.js"></script>
  </head>

  <body ng-controller="HomeController">
        <div class="container">
            <h1>Cidades do Tocantins</h1>
            
            <div class="row">
                <div class="col-xs-6 col-md-6">
                    <h2>Lista de cidades</h2>
                    <p>
                        <div class="input-group">
                            <input type="text" class="form-control" ng-model="q" placeholder="Pesquisar...">
                            <span class="input-group-addon">
                                <span class="glyphicon glyphicon-search"></span> 
                            </span>
                        </div>
                    </p>
                    
                    <table class="table table-hover table-striped">
                        <thead>
                            <tr>
                                <th>#</th>
                                <th>UF</th>
                                <th>Nome</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr ng-repeat="cidade in cidades | filter:q | orderBy:estado.uf">
                                <td>{{$index}}</td>
                                <td>{{cidade.estado.uf}}</td>
                                <td>{{cidade.nome}}</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
                <div class="col-xs-6 col-md-6">
                    <h2>Cadastrar cidade</h2>
                    
                    <form class="form" name="form" novalidate>
                        <div class="form-group">
                            <label for="nomeDaCidade">Nome
                            </label>
                            <input type="text" id="nomeDaCidade" name="nomeDaCidade" class="form-control" ng-model="cidade.nome" placeholder="Nome da cidade" required="" value="">
                            <div ng-show="form.$submitted || form.uEmail.$touched">
                                <div ng-show="form.nomeDaCidade.$error.required">Informe o nome da cidade</div>
                            </div>
                        </div>
                        <div class="form-group">
                            <label for="estado">Estado</label>
                            <select class="form-control" id="estado" name="estado" ng-model="cidade.estado.uf" required="" value="TO">
                                <option ng-repeat="estado in estados" value="{{estado.uf}}">{{estado.nome}}</option>
                            </select>
                            <div ng-show="form.$submitted || form.uEmail.$touched">
                                <div ng-show="form.estado.$error.required">Escolha um Estado da lista</div>
                            </div>
                        </div>
                        <div>
                            <button class="btn btn-default" type="submit" ng-click="salvar(cidade)">Salvar</button>
                        </div>
                    </form>

                </div>
            </div>
        </div>
  </body>

</html>
/* Put your css in here */