2017-03-02 63 views
0

因此,我有一個HTML頁面/ profile#IDGoesHere,它與ng-app綁定。 ng-app有三列(使用Bootstrap),中間使用Angular的ng-view。在ng-view之外提供變量

所以它是這樣的:

/profile文件#IDGoesHere(並在其中):

  • 所有活動
  • 帖子
  • 喜歡
  • 不喜歡 等

The hre f鏈接在ng-view之外的HTML頁面上設置,所以當我進入/ profile#IDGoesHere頁面時,我使用服務將userID設置爲一個變量。如下圖所示:

profileApp.service('globalParams', function() { 
var profileID = ''; 
var user = {}; 

return { 
    getProfileID: function() { 
     return profileID; 
    }, 
    setProfileID: function(value) { 
     profileID = value; 
    } 
}; 
}); 

我通過「globalParams中」服務到每一個控制器,因爲我需要訪問配置文件ID,以便做出進一步的呼籲得到了用戶的特定數據。

我的角度路由器看起來是這樣的:

$routeProvider 
.when('/profile:id', { 
    templateUrl : 'partial/profile/feed.html', 
    controller : 'mainController', 
    resolve:{ 
     myData: ['$http', function($http){ 
      return $http.get('/session'); 
     }] 
    } 
}) 
.when('/posts', {templateUrl: 'partial/profile/posts.html',   controller: 'postsController'}) 
.when('/agreed', {templateUrl: 'partial/profile/likes.html',  controller: 'likesController'}) 
.when('/disagreed', {templateUrl: 'partial/profile/dislikes.html', controller: 'dislikesController'}) 
.when('/comments', {templateUrl: 'partial/profile/comments.html', controller: 'commentsController'}); 
}); 

現在的問題,該鏈接的帖子,喜好,厭惡等不具備的配置文件ID在他們當你去的主要途徑將它們設置, /簡介#IDGoesHere。

這適用於我在頁面上並使用'globalParams'服務繼續導航的情況,但是如果我在其中一個子頁面上刷新頁面,數據將丟失。

注:我不能讓整個頁面重新加載,這就是爲什麼我使用ng-view。我可以通過這樣做來解決這個問題,但它會打敗單頁應用程序的目的。

有沒有人有這個好主意?一直拉着我的頭髮,但覺得我失去了一些非常明顯的東西。

在此先感謝

編輯:因爲這是造成一些混亂,我添加了一個截圖來證明它的樣子: enter image description here

+0

答案是在問題:r outes應該是/ profile /:id/posts(例如)。這個全球參數服務應該被刪除。 –

+0

是的,但實質上是我的問題。當它在ng-view之外時,我如何將id傳遞給href? –

+0

與其他地方一樣。通過使用$ routeParams服務來獲取ID。 –

回答

0

得到它固定在整個<體>連接到一個父控制器,並在該控制器下,我使用$ window.location.href並從URL中分離ID,然後將其添加到服務,然後我可以將其添加到我的子頁面的外部hrefs,頁有一個routeParam以及