如何使用$ state.go与子状态?

时间:2013-12-11 17:20:38

标签: angularjs angular-ui-router

我正在尝试将状态从其父页面切换到子状态。这是我的设置:

  1. 我有一个表格(网址:/会话)附加了ng-click
  2. ng-click运行$ resource POST,并调用
  3. $ state.go成功导航到新页面(网址:/ session /:sessionId)
  4. 我有两个州的独立控制器。

    .config( function config( $stateProvider ) {
      $stateProvider
      .state( 'alkalom', {
        url: '/alkalmak',
        controller: 'AlkalomCtrl',
        templateUrl: 'home/home.tpl.html',
        data:{ pageTitle: 'Alkalmak' }
      })
      .state('alkalom.details', {
        url: '/:alkalomId',
        controller: 'AlkalomItemCtrl',
        templateUrl: 'home/alkalom.tpl.html',
        data:{ pageTitle: 'Alkalom' }
      });
    })
    .controller( 'AlkalomCtrl', function HomeController( $scope, Global, Alkalom , $stateParams, $state) {
      console.log('AlkalomCtrl initialized', $stateParams);
      $scope.alkalmak = Alkalom;
      $scope.setupAlkalom = function(alkalom) {
        alkalom = new Alkalom(alkalom);
        alkalom.$save(function(value, hdrs){
          $state.go('.details', {'alkalomId': value._id});
        });
      };
      $scope.today = function() {
        return Date.now().day;
      };
      $scope.nextHour = function() {
        return Date.now().hour + 1;
      }
    })
    .controller('AlkalomItemCtrl', function AlkalomItemCtrl($scope, Global, Alkalom, $stateParams) {
          console.log('AlkalomItemCtrl initialized', $stateParams);
          $scope.jogasok = Global.getJogasok();
          $scope.alkalom = Alkalom.get($stateParams.alkalomId)
          $scope.addJogas = function(jogas) {
            $scope.jogasok = Global.addJogas( jogas );
            $scope.addResztvevo(jogas);
          };
          $scope.addResztvevo = function(jogas) {
            $scope.alkalom.$addResztvevo({
              '_id': $scope.alkalom._id,
              'jogas': jogas._id
            }, function(value, hdrs) {
              $scope.alkalom = value;
              // .resztvevok.push(jogas);
            });
          };
          $scope.removeResztvevo = function(index) {
            $scope.alkalom.resztvevok.splice(index, 1)
            $scope.alkalom.$save();
          };
        });
    

    您可以在此处查看日志语句。在步骤1,运行第一个日志。但是根本没有更多的日志!浏览器中的位置哈希值仍会发生变化。

    $ state.go应该使用不同的方式吗?

1 个答案:

答案 0 :(得分:0)

我应该在主要州使用标签'图。

请参阅http://plnkr.co/edit/G450hacLevbsswFK0vKK?p=preview