Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何立即更新angular ui.router嵌套状态?_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 如何立即更新angular ui.router嵌套状态?

Angularjs 如何立即更新angular ui.router嵌套状态?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我试着用angularjs,webpack2制作模式弹出窗口 但是有些问题困扰着我 我想使模式弹出,有自定义的网址,但 在模式弹出窗口中,$state.current仍然指示父级的状态 我搜索了onEnter函数,当状态转换完成时调用。 同时,莫代尔的状态没有更新。(我认为这就是莫代尔状态表示家长状态的原因) 我可以使用setTimeout函数获取模态自己的状态和状态参数,但这只是一个技巧,对吗 如何以正确的方式获取modal的状态 === 这是我的app.js // HOME .st

我试着用angularjs,webpack2制作模式弹出窗口

但是有些问题困扰着我

我想使模式弹出,有自定义的网址,但

在模式弹出窗口中,
$state.current
仍然指示父级的状态


我搜索了
onEnter
函数,当状态转换完成时调用

同时,莫代尔的状态没有更新。(我认为这就是莫代尔状态表示家长状态的原因)

我可以使用setTimeout函数获取模态自己的状态和状态参数,但这只是一个技巧,对吗

如何以正确的方式获取modal的状态

===

这是我的app.js

  // HOME
  .state('home', {
    url: '/',
    templateUrl: 'client/pages/home/home.html',
    controller: 'HomeController',
  })

  // PLAYER MODAL
  .state('player', {
    url: 'player/:playerName',
    parent: 'home',
    onEnter: function($stateParams, $state, $uibModal) {
      $uibModal.open({
        templateUrl: 'client/pages/player/player.html',
        resolve: {},
        controller: 'PlayerController'
      }).result.then(function (result) {
        // $scope.$close
        alert('result ->' + result);
      }, function (result) {
        // $scope.$dismiss
        alert('dismiss ->' + result);
      }).finally(function () {
        // handle finally
        return $state.go('home');
      });
    }
  });
家庭控制器

  angular.module('907degree')
  .controller('HomeController', function ($scope, $state) {
    $scope.state =  $state.current;
    $scope.players = ['messi', 'hazard', 'ronaldo'];

    $scope.showModal = function (playerId) {
      $state.go('player', { playerName: playerId });
    };
})
还有游戏控制器

  angular.module('907degree')
  .controller('PlayerController', ($scope, $http, $state, $stateParams, itemService) => {
    $scope.playerState = $state.current;
    $scope.params = $stateParams.playerName;
    $scope.item = itemService.get($stateParams.id);

    $scope.ok = function () {
      $scope.$close('clicked OK');
    };

    $scope.dismiss = function () {
      $scope.$dismiss('clicked CANCEL');
    };

    $scope.checkState = function () {
      console.log($state.current, $stateParams);
      console.log($scope.playerName);
    }
  })

我认为我的回购比plunker更能解决这个问题。。就这样


git克隆hagfish1210@gitlab.com/hagfish1210/907degrees.git&npm安装&npm运行dev

注入当前的
$transition$

onEnter: function($transition$, $state, $uibModal) {
  $uibModal.open({
    templateUrl: 'client/pages/player/player.html',
    resolve: { $transition$: () => $transition$ },
    controller: 'PlayerController'
  }).result.then(function (result) {
    // $scope.$close
    alert('result ->' + result);
  }, function (result) {
    // $scope.$dismiss
    alert('dismiss ->' + result);
  }).finally(function () {
    // handle finally
    return $state.go('home');
  });
}
在PlayerController中,询问转换的参数

angular.module('907degree')
  .controller('PlayerController', ($scope, $http, $state, $transition$, itemService) => {
    $scope.playerState = $state.current;
    var params = $transition$.params();
    $scope.params = params.playerName;
    $scope.item = itemService.get(params.id);

    $scope.ok = function () {
      $scope.$close('clicked OK');
    };

    $scope.dismiss = function () {
      $scope.$dismiss('clicked CANCEL');
    };

    $scope.checkState = function () {
      console.log($state.current, params);
      console.log($scope.playerName);
    }
  })

Transition
类公开了许多关于正在运行的转换的信息:

我认为我的repo比plunker更能解决这个问题。。就这样。git clone&npm install&npm run Device如果您使用的是ui router 1.0,简单的答案是注入
$transition$
,并从中获取到/从状态和到/从参数。注入$transition$到播放器控制器也对吗?你是我的救世主。非常感谢你,克里斯!