如何刷新解决?

时间:2015-06-10 14:35:18

标签: javascript angularjs angular-ui-router

使用ui-router,我有一个具有解析功能的状态:

.state('tab.social', {
    url: '/social/',
    views: {
      'menuContent': {
        templateUrl: 'templates/social/tab-social.html',
        controller: 'SocialCtrl',
        resolve: {
          socialAuthResolve: socialAuthResolve
        }
      }
    }
  })

我按如下方式捕获控制器中的分辨率:

.controller('SocialCtrl', function($scope, SocialAuth, socialAuthResolve) {
    //
    console.log(socialAuthResolve);

    //
    $scope.logOut = function() {
       SocialAuth.logOut();
       $state.go('tab.social', {}, {reload: true});
    };

    //
    $scope.logIn= function() {
       SocialAuth.logIn();
       $state.go('tab.social', {}, {reload: true});
    };
})

但是,当按下logOutlogIn时,我的状态不会刷新。我正在使用解析socialAuthResolve中的一些参数,并希望更新此参数。在这种情况下,旧参数仍在那里。

只有当我刷新浏览器时,变量和页面才会相应更新。如何在logOutlogIn之后刷新页面?例如,强行再次解决?

1 个答案:

答案 0 :(得分:1)

以下是config:

的示例状态
.state('app.stateName', {
      url: "/theUrl",
      views: {
        'myViewName': {
          templateUrl: "templates/template.html",
          controller: 'SomeController',
          resolve: {
            pleaseResolve: function() {
              console.log("I am resolved");
            }
          }
        }
      }
    })

在我的控制器中(假设SomeController如上所述),每当我进入状态时,我就会运行它。

var res = ($state.$current.self.views.myViewName.resolve.pleaseReslove)
res.call()

每次进入视图时,都会调用我的解析函数。