如何从Angularjs中的控制器重新加载另一个控制器?

时间:2017-06-07 10:26:40

标签: javascript angularjs

您好我正在开发angularjs的网站。我正在使用ui-routing。我想在用户登录后重新加载状态。我有index.html和app.js.以下是我的app.js

var app = angular.module('RoslpApp', ['pascalprecht.translate']);
app.config(function ($stateProvider, $urlRouterProvider, $translateProvider, $translatePartialLoaderProvider)
{
    $urlRouterProvider.otherwise('/HomePage');
    $stateProvider
   .state('Login', {
       url: '/Login',
       templateUrl: 'App/Registration/Login.html',
       controller: 'Login'
   });
});

app.controller('RoslpAppController', ['$scope', function ($scope) {
 var cookieloginid = $cookieStore.get('LoginID');
    if (cookieloginid != null) {
        //This will reoload
        var id = document.getElementById('ProfileDropdown');
        id.innerHTML = $scope.ProfileDropdown = ' <ul>' +
            '<li><a href="#/userProfile">User Profile</a></li>' +
            '<li>test1</li>' +
           ' <li onclick="logout(event)">logout</li>' +
        '</ul>';
        $scope.dp == false;
    }

以下是我的登录代码。

  $http.post(url, sub).then(function (response) {
                        setTimeout(function () { 
//Trigger or reload RoslpAppController controller
LoginSuccess(response); }, 1000);
                    }, function (error) {
                        setTimeout(function () { HideLoader(); }, 1000);
                        toastr.error($filter('translate')(error.data.msg));
                    });

登录成功后,我将获得登录ID,我将其存储在cookie中。在RoslpAppController控制器中,我想在登录时检查cookie是否存在。我可以知道如何做到这一点吗?谢谢。

1 个答案:

答案 0 :(得分:0)

在登录POST调用后,您必须转换到从服务器获取成功响应的状态。 要转换为州使用 - $state.go("<statename>",{params},{reload : true})

如果您没有RoslpAppController的任何州,请填一个。

OP评论后编辑:

.state('Roslp', {
    url: '/Roslp',
    templateUrl: 'App/Registration/View.html',
    controller: 'RoslpAppController'
});

在templateUrl中,给出要在登录后加载的视图。 立即使用$state.go("Roslp",{params},{reload : true})