Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

22
respostas

Não consigo passar meu curinga pela url

Dada requisição, eu tentei passar o valor pela url, mas ao clicar no item não resulta em nada e o console não acusa erro:

MINHA LISTA

<ion-list>
<ion-item ng-repeat="planta in listaPlantas" href="#/plantaEscolhida/{{planta}}"><i class="ion ion-leaf balanced"></i> {{planta.title.rendered}}
<p ng-bind="thisCanBeusedInsideNgBindHtml">{{planta.content.rendered}}</p>
</ion-item>
 </ion-list>

MINHA COTROLLER

angular.module('starter')
.controller('plantaEscolhidaController', function($scope, $stateParams, PlantaService){

    $scope.plantaEscolhida = $stateParams.planta;

MINHA ROTA

valor em que este

.state ( "menu.listagem", { 
url: '/ Listagem', 
vistas: { 
'menuContent': { 
templateUrl: 'templates / listagem.html' 
}} 
})

valores onde ir para obter

.state("menu.plantaEscolhida", {
url: '/plantaEscolhida/:planta', 
views:{
  'menuContent':{
    templateUrl:'templates/plantaEscolhida.html'
  }}
22 respostas

Helio,

O unico problema que estou vendo no seu código é que você não especificou qual é a controller do template plantaEscolhida.html.

Lá no state tem q especificar a controller:

.state("menu.plantaEscolhida", {
url: '/plantaEscolhida/:planta', 
views:{
  'menuContent':{
    templateUrl:'templates/plantaEscolhida.html',
    controller: 'plantaEscolhidaController'
  }}

Sim, professor. Atualmente meu código está com a controller, mas ainda não está como eu esperava. Segue o código da controller:

angular.module('starter')
.controller('plantaEscolhidaController', function($scope, $stateParams, PlantaService){

    $scope.plantaEscolhida = $stateParams.planta;


});

Hélio,

O problema não é a controller e sim declaração de que essa controller é para aquela view/template.

Isso é feito lá no routes.js. Tenta colocar a controller como eu falei no outro comentário

Professor, após eu ter postado esse tópico eu inseri a controller sim. a rota esta assi:

 .state("menu.plantaEscolhida", {
    url: '/plantaEscolhida/:planta', 

    views:{
      'menuContent':{
        templateUrl:'templates/plantaEscolhida.html',
        controller: 'plantaEscolhidaController'
      }}     
 })

Helio,

A controller está sendo carregada certinho?

Colocar um alert ali na controller para ver se pelo menos a controller está sendo carregada certinho, pois não vejo problema em outro local.

Verdade, nem o alert e nem um console.log me retornar resultados

Então aí está o problema.

Posta aí pra gente, o state abstrato. Pois me parece q está errado lá.

Estou seguindo o mesmo padrão de ensinamento do curso:

.state("menu",{
    url:"/menu",
    templateUrl:'templates/menu.html',
    abstract:true,
    controller:'listagemController'
})

 .state("menu.listagem", {
    url: '/listagem', 
    views:{
           'menuContent':{
               templateUrl:'templates/listagem.html'
           }}     
 })

.state("menu.plantaEscolhida", {
    url: '/plantaEscolhida/:planta', 

    views:{
      'menuContent':{
        templateUrl:'templates/plantaEscolhida.html',
        controller: 'plantaEscolhidaController'
      }}     
 })

Helio,

A gente não criou esse tipo de menu, então está um pouco fora do padrão do curso, mas não tem problemas, eu estou tentando de ajudar mesmo.

Vamos agora tentar achar o erro.

o ion-nav-view está com esse nome aí: "menuContent" ? O arquivo de controller foi carregado lá no index? O arquivo de rota foi carregado lá no index?

Sim, a index há o carregamento das service, rotas e controller, vale ressaltar que na tag body tenho como controller o meu:

ng-controller="listagemController"

Sim, meu ion-nav-view está com meu menuContent, ressaltando que o menu é um arquivo separado (menu.html), segue:

<ion-side-menus enable-menu-with-back-views="true">

    <ion-side-menu-content ng-click="toggleLeftSideMenu()" side="left">

        <ion-nav-bar class="bar-balanced">
            <ion-nav-back-button>
            </ion-nav-back-button>

            <ion-nav-buttons side="left">
                <button class="button button-clear button-icon light ion-navicon" menu-toggle="left"></button>
            </ion-nav-buttons>
        </ion-nav-bar>

        <ion-nav-view name="menuContent"></ion-nav-view>
    </ion-side-menu-content>

    <ion-side-menu>

    <ion-header-bar class="bar-balanced">
        <h1 class="title">Menu</h1>
    </ion-header-bar>

        <ion-content>

        <ion-list>
            <ion-item href="#/menu/listagem" menu-close>Plantas Medicinais</ion-item>
            <ion-item href="#/" menu-close>Pesquisas avançadas</ion-item>
            <ion-item href="#/menu/dicas" menu-close>Dicas de Ouro</ion-item>
            <ion-item href="#/menu/enfermidades" menu-close>Efermidades</ion-item>
            <ion-item href="#/menu/sobre" menu-close>Sobre nós</ion-item>

        </ion-list>

        </ion-content>

    </ion-side-menu>

</ion-side-menus>

Nossa Helio, estamos perdidos hein, hahahaha...

Já tentou tirar esse ng-controller? Pq realmente ele não é necessário. É a unica coisa q estou vendo. =/

Já tirei e até mesmo mudei de lugar , nenhum dos dois deram certos.

Tentei me basear em links como estes:

http://mcgivery.com/understanding-ionics-side-menu/ http://robferguson.org/2015/01/07/ionics-sidemenu-template-and-nested-states/

E pesquisas no google como esta: https://www.google.com.br/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=ion%20side%20menu%20routes

Ainda não obtive o sucesso. Eu aposto que poderá ser na estrutura html

Tenta criar uma nova controller do zero então e fazer o teste do alert. A gente já viu que o problema está sendo na controller. Crie uma nova e coloque lá no routes.js

Está dizendo em criar a controller :

menuContent

E dar um alerta a ela?

Não não. Criar uma plantaEscolhidaController nova, do zero. Então nessa nova controller criar o alert

Bem, criei e chamei ela na minha index e ela me retornou o resultado no meu console.log. Porém ainda não acontece nada quando eu clico no item

Então acho q o problema está agora no href do seu item.

Tente algo assim

href="#/menu/plantaEscolhida/{{planta}}"

Infelizmente não, professor. tentei de diversas formas ja. to seguindo isso agora:

http://robferguson.org/2015/01/07/ionics-sidemenu-template-and-nested-states/

Helio,

Pode colocar esse projeto no github para eu dar uma olhada e tentar rodar ele aqui na minha maquina?

Claro, professor. Acabei de colocar e aqui está o repositório: https://github.com/DeveloperBrasil/compartilhar

Vale ressaltar que eu estou fazendo uma requisição em site wordpress no meu localHost, Exemplo:

O titulo da postagem, é recoheida como title.rendered, o conteudo é reconhecido como content.rendered. Mas eu comentei a requisição e criei um array com valores só para o senhor tentar achar o erro.

Helio,

não consegui ver o erro. Você conseguiu avançar nisso?