使用$ state.go和$ scope的参数

时间:2015-12-04 14:57:54

标签: javascript angularjs ionic-framework angular-ui-router angularjs-routing

我尝试了很多东西将数据传递给我的视图,但我不知道出了什么问题。 我尝试使用$ 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>

3 个答案:

答案 0 :(得分: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对象中获取此值。

答案 1 :(得分:1)

您可以在州的网址中使用:添加州参数。

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

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

这将使$ propertyParams

中的属性assunto可用

答案 2 :(得分: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>