Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Rotas para o modal

Galera, eu gostaria de saber como criar uma rota para abrir um modal na minha primeira página do site, agradeço desde já a ajuda de todos.

    <div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel">
    <div class="modal-dialog" role="document">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-label="Close">
                    <span aria-hidden="true">×</span>
                </button>
                <h4 class="modal-title" id="exampleModalLabel">Cadastre-se </h4>
            </div>
            <div class="modal-body">
                <form>
                    <div class="form-group">
                        <label for="inputName">Nome:</label> 
                        <input type="text" class="form-control" id="inputName" placeholder="Nome Completo" ng-model="cadastroNome">
                    </div>
                    <div class="form-group">
                        <label for="inputEmail">Email:</label> <input type="email" class="form-control" id="inputEmail" placeholder="exemplo@hotmail.com" ng-model="cadastroEmail">
                    </div>
                    <div class="form-group">
                        <label for="inputSenha">Senha:</label> 
                        <input type="password" class="form-control" id="inputSenha" placeholder="Senha" ng-model="cadastroSenha">
                    </div>
                    <div class="form-group">
                        <label for="inputConfSenha">Confirmação da Senha:</label> 
                        <input type="password" class="form-control" id="inputConfSenha" placeholder="Confirme sua senha" ng-model="cadastroConfSenha">
                    </div>
                    <div class="form-group form-check">
                        <input type="checkbox" class="form-check-input" id="inputCheck" ng-model="loginKeepConnect"> 
                        <label class="form-check-label" for="inputCheck">Criando sua conta você concorda com nossos <a>termos de uso</a>.
                        </label>
                    </div>
                    <div ng-show="showError" class="alert alert-danger alert-dismissable">
                        <button type="button" class="close" aria-hidden="true" ng-click="hideErrorMessage()">×</button>
                        <p ng-bind-html="errorMessage"></p>
                </form>
            </div>
            <div class="modal-footer">
            <div class="row">
             <a class="col-md-4" ng-click="goToLogin()">Clique aqui para o Login</a>
                <button id="btnCadastrar" ng-click="criarConta()" class="btn btn-primary" data-loading-text="Cadastrando...">Cadastrar</button>
                <button ng-click="voltar()" class="btn btn-second">Voltar</button>
                </div>
            </div>
        </div>
    </div>
</div>

O código acima esta dentro de um arquivo chamado cadastro.hml

angular.module('ssapp', [
    'ui.router',
    'p.controllers',
    'p.directives'
])

.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouterProvider, $locationProvider) {
    $locationProvider.html5Mode(true).hashPrefix('!');

    $stateProvider
      .state('home', {
        url: "/",
        templateUrl: "template/home2.html",
        controller : "HomeCtrl"
      })

      .state('login', {
          url: "/login",
          templateUrl: "template/login.html",
          controller : "LoginCtrl"
      })

      .state('cadastro', {
        url: "/cadastro",
        templateUrl: "template/cadastro.html",
        controller: 'CadastroCtrl'
      })
      ;


    $urlRouterProvider.otherwise("/");
}]);

estas são as rotas que estão dentro do app.js

<div style="position: relative;">
    <img class="top-bg-image" src="../img/bg-page.jpg" /> <img
        class="top-logo" src="../img/logo-small.png" />
    <div class="top-text-image">
        <span>ppppppppppppppppp<br /> ppppppppppppp
            ppppppppppppppp<br /> online
        </span> <br /> <a href="#" ng-click="goToModal()" class="btn btn-comecar" role="button" data-toggle="modal" data-target="#exampleModal" data-whatever="@getbootstrap">Começe agora</a>
    </div>
</div>

este é o botão que eu quero que quando clique apareça o modal, ele esta dentro do home2.html

agradeço a todos que puderem me dar essa força!!

7 respostas

Oi Roberto,

Acredito que como é só para abrir a modal, não tem necessidade de ser uma rota.

Pode ser o botão mesmo chamando a modal via JS, conforme exemplo mostrado no site do bootstrap.

Então no seu caso seria remover o ng-click do botão.

Veja se funciona.

Obrigado pela resposta Rodrigo. Realmente, eu descobri que não são as rotas que devem serem alteradas. Recebi algumas instruções, porém não estou conseguindo criar uma função pra chamar esse modal pelo angular, realizando pesquisas na internet vi que dava pra usar o ng-show criando uma função no controller.js.

$scope.exibeModal = function(comece){
        return comece ? true : false;
    };

algo parecido com isso, mas não consegui desenvolver essa função, alguma luz?

Oi Roberto,

Então, eu acho que o angular não teria influencia nessa parte de abrir a modal.

Seria tudo via HTML e JS.

Você precisa deixar o botão assim:

<a href="#" class="btn btn-comecar" role="button" data-toggle="modal" data-target="#exampleModal">Começe agora</a>

E ao clicar nele a modal deveria ser aberta automaticamente.

Verifique se você fez o import do JS do bootstrap e do jquery, que ele depende, nessa sua página.

mesmo com o modal estando em outro arquivo html?

Oi Roberto,

O código da janela modal precisa estar junto no mesmo html de onde está o botão. Nesse caso não teria interferencia do Angular.

Mas se estiver em outro arquivo separado, aí sim vai precisar do esquema do rota configurada.

Então Rodrigo, o código do modal esta em um arquivo separado da tela principal, o modal está num arquivo chamado cadastro.html e a tela principal está num arquivo chamado home2.html, juntamente com esse botão, que quando clicado abriria o modal para o cadastro. Ai que eu to sofrendo!

solução!

problema resolvido, os modais precisam ficar na mesma pagina do botão.

$('#modalLoginHome').modal('show');

e essa linha de código em uma função no arquivo controller