2016-07-14 47 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

謝謝,這是我第一眼想到的,但我想看看是否有其他人這樣做的方式,但似乎沒有。 –

相關問題