在ng-view之外提供变量

时间:2017-03-02 17:01:01

标签: angularjs

所以,我有一个HTML页面,/ profile#IDGoesHere,这是一个ng-app。 ng-app有三列(使用Bootstrap),其中间使用Angular的视图。

所以它是这样的:

/ profile#IDGoesHere(及其中):

  • 所有活动
  • 帖子
  • 喜欢
  • 踩 等

href链接在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'服务到每个控制器,因为我需要访问profileID,以进一步调用以获取用户的特定数据。

My Angular Router看起来像这样:

 $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'});
});

现在问题是,帖子,喜欢,不喜欢的链接中没有profileID,因为它们是在你去主路线时设置的,/ profile#IDGoesHere。

当我在页面上并使用' globalParams'进行导航时,此功能正常工作。但是,如果我在其中一个子页面上刷新页面时,数据就会丢失。

注意:我无法重新加载整个页面,这就是我使用ng-view的原因。我可以通过这样做来解决这个问题,但它会破坏单页应用程序的目的。

有人对此有好主意吗?一直在拉我的头发,但觉得我错过了一些非常明显的东西。

提前致谢

编辑:因为它引起了一些混乱,我添加了一个截图来演示它的样子: enter image description here

1 个答案:

答案 0 :(得分:0)

通过附加整个<身体>在父控制器和控制器下,我使用了$ window.location.href并从URL中拆分了ID,然后将其添加到服务中,然后我可以将其添加到我的子页面的外部href中,基本上是子页面也有routeParam