2016-07-14 46 views
0

我有两个页面,on负责列出一些记录,另一个负责显示我们点击记录时的更多信息。在AngularJS中传递一个具有状态的参数

这是我的列表中的记录:

<ul id="myList"> 
    <li ng-repeat="offre in offres | orderBy:'-dateCreation' | filter:{etat:'true'} | limitTo:limit"> 
    <h4><a href="" ng-click="goTo(offre.titre,offre.codeOffre)">{{offre.titre}}</a></h4> 
    </li> 
</ul> 

当我点击一些记录它会调用该方法GOTO(),这是因为以下几点:

$scope.goTo=function(titreOffre,codeOffre){ 
    titreOffre=titreOffre.replace(/ /g,"-"); 
    $state.go('app.job',{titreOffre:titreOffre,codeOffre: codeOffre}); 
}; 

这是app.job状态:

.state('app.job', { 
    url : '/job/:titreOffre', 
    params : { 
    'codeOffre' : null 
    }, 
    templateUrl : 'views/tmpl/job-details.html' 
}) 
job-details.html页面

我使用,我通过了codeOffre到app.job作为参数,以获取有关该记录的数据如下:

$http.get('http://localhost:8080/offre/offres/' + codeOffre) 
    .then(function (response) { 
     return response; 
    }, function (error) { 
     return 'There was an error getting data'; 
    }); 

所以这一切工作正常,唯一的问题是,当我显示job-details.html页面,然后我刷新它,我通过了该codeOffre param不再保留我传递给它的值并将其设置为null。

我该如何解决这个问题?

+1

由于param未在url中列出,因此您不能在重新加载时访问它,除非它存储在像回答中提到的'sessionStorage'之类的地方。其他选项是将其添加到网址。但我想你不想这样做。 – Chinni

+0

@Chinni是啊,那是我以为我自己,我打算使用'job /:codeOffre /:titreOffre',感谢您的帮助 –

回答

1

有两种选择:

1.通过它的网址:

url: '/job/:titreOffre/:codeOffer' 

2.使用的sessionStorage:

定义到一个服务getter和setter方法读取,写入并更新codeOffer的值。适当地在控制器中使用这些方法。

+0

谢谢,这是我第一眼想到的,但我想看看是否有其他人这样做的方式,但似乎没有。 –

相关问题