1

Я пробовал много вещей, чтобы передавать данные на мой взгляд, но я не знаю, что не так. Я пробовал использовать $ scope и передавать данные с помощью $ state.go, но ничего не происходит.

.state('app.ler', 
 
          { 
 
           views: { 
 
            'menuContent': { 
 
             templateUrl: 'mensagens/mensagemRead.html', 
 
             controller: 'MensagensCtrl', 
 
             params: {'assunto': null} 
 
            } 
 
           
 
           }, 
 
           url: '/ler' 
 
          }) 
 
    
 
    $scope.read = function (id) { 
 
      MensagensService.ler(id).then(function (response) { 
 
//    $scope.mensagem_ler = response.data[0]; 
 
//    alert(response.data[0].assunto); 
 
       $state.go('app.ler', {assunto:response.data[0].assunto}); 
 
       console.log($stateParams); 
 
      }); 
 
     };

<ion-view title="Mensagens2">  
 
    <ion-content class="has-header"> 
 
     <div class="list"> 
 
      <a class="item item-avatar" href="#"> 
 
       <img src="venkman.jpg"> 
 
       <h2>Gustavoaaa</h2> 
 
       <!--<p>{{mensagem_ler.assunto}}</p>--> 
 
<p>{{assunto}}</p> 
 
      </a> 
 
     </div> 
 
    </ion-content> 
 
</ion-view>

ответ

1

params вариант состояния доступен в корневом уровне state определения, вы не могли иметь их в листовом уровне namedView.

.state('app.ler', { 
    views: { 
     'menuContent': { 
      templateUrl: 'mensagens/mensagemRead.html', 
      controller: 'MensagensCtrl', 
     } 
    }, 
    url: '/ler/{assunto}', //here is parameter mentioned in URL 
    params: { 
     'assunto': null //parameter default value 
    } 
}) 

Вы можете получить эти значения в $stateParams объекта внутри контроллера.

0

Попробуйте это в ваших государственных конфигурациях

url: '/ler?assunto' 

Если вы хотите передать несколько параметров, то просто добавьте их как этот

url: '/ler?assunto&param2&param3....' 

Чтобы использовать государственные параметры по вашему мнению, вы можете сохранить его в переменную $ scope в вашем контроллере, а затем использовать ее.

Например: $ scope.assunto = $ stateParams.assunto;

<ion-view title="Mensagens2">  
    <ion-content class="has-header"> 
     <div class="list"> 
      <a class="item item-avatar" href="#"> 
       <img src="venkman.jpg"> 
       <h2>Gustavoaaa</h2> 
       <!--<p>{{mensagem_ler.assunto}}</p>--> 
<p>{{assunto}}</p> 
      </a> 
     </div> 
    </ion-content> 
</ion-view> 
+0

ОК, но как я могу получить это значение на мой взгляд? Спасибо –

+0

привяжите его к переменной области. В вашем контроллере сделайте что-то вроде $ scope.val = $ stateParams.assunto и в вашем шаблоне вида {{val}}. Убедитесь, что вы ввели зависимость $ stateParams – Vandervidi

+0

@GustavoMartins Я обновил свой ответ – Vandervidi

1

Можно добавить параметр состояния, используя : в адрес вашего государства.

.state('app.ler', 
    { 
     views: { 
      'menuContent': { 
        templateUrl: 'mensagens/mensagemRead.html', 
        controller: 'MensagensCtrl' 
       } 

     }, 
     url: '/ler/:assunto' 
}); 

Это позволит сделать свойство assunto доступной в $ stateParams

+0

Спасибо. Два ответа хорошо работают. –

Смежные вопросы