2016-09-11 15 views
0

私のアプリケーションのメニューレイアウトを再構成するためにstateHelperを使用しようとすると、エラーが発生しました。とき私のアプリのロードとapp.jsに$state.go('app.user.home')実行ui-routerでstateHelperを使用するユーザーが子である状態 ''から 'app.user.home'を解決できません抽象的な状態のアプリケーション抽象状態

Error: Could not resolve 'app.user.home' from state '' 
    at Object.transitionTo (ionic.bundle.js:49177) 
    at Object.go (ionic.bundle.js:49110) 
    at app.js:220 

これが起こる:220

私の状況は、管理ユーザーが特定のビューのみ管理者とサイドメニューを開き、「ハンバーガー・スタック」アイコンを示しているということですにナビゲートすることができます。

管理者以外のユーザーが同じビューに入ると、代わりにホームビューにリンクする「ホーム」アイコンが表示されます。

管理者でも管理者でもない人は、両方とも移動できる追加のビューにui-srefのリンクを持つホームビューを持っています。

管理者用に「ハンバーガーアイコン」が表示されている場合、ホームビューへのui-srefはサイドメニューに移動されます。

これは私のstateHelperProviderコードです。

.config(function(stateHelperProvider, $urlRouterProvider, $ionicConfigProvider) { 

    stateHelperProvider 

    .state({ 
    name: 'app', 
    url: '/', 
    abstract: true, 
    templateUrl: 'templates/menu.html', 
    controller: 'MenuCtrl', 
    }) 
    .state({ 
    name: 'app.user', 
    url: '/user', 
    abstract: true, 
    children:[ 
     { 
     name: 'app.user.home', 
     url: '/home', 
     templateUrl: 'templates/landing.html', 
     controller: 'HomeCtrl' 
     }, 
     { 
     name: 'app.user.board', 
     url: '/board', 
     templateUrl: 'templates/pta-board.html', 
     controller: 'BoardCtrl' 
     }, 
     { 
     name: 'app.user.events', 
     url: 'events', 
     templateUrl: 'templates/events.html', 
     controller: 'EventsCtrl' 
     }, 
     { 
     name: 'app.user.chatrooms', 
     url: '/chat-rooms', 
     templateUrl: 'templates/chat-rooms.html', 
     controller: 'RoomsCtrl', 
     children:[ 
      { 
      name: 'app.user.chatrooms.chatroom', 
      url: '/room', 
      templateUrl: 'templates/chat-room.html', 
      params:{ 
       roomId: null, 
       chatters: null 
      }, 
      controller: 'ChatCtrl' 
      } 
     ] 
     }, 
     { 
     name: 'app.user.profile', 
     url: '/profile', 
     templateUrl: 'templates/user-profile.html', 
     params:{ 
      isNewUser: null 
     }, 
     controller: 'UserCtrl' 
     }, 
     { name: 'app.user.admin', 
     url: 'admin', 
     abstract: true, 
     children:[ 
      { 
      name: 'app.user.admin.calendar', 
      url: '/calendar', 
      params:{ 
       selectedEvent: null, 
       calendarTitle: 'Volunteer', 
       isVolunteerSignup: true 
      }, 
      templateUrl: 'templates/rcalendar.html', 
      controller: 'CalendarCtrl' 
      }, 
      { 
      name: 'app.user.admin.volunteers', 
      url: '/volunteers', 
      params:{ 
       thisHoursVolunteers: null, 
       thisEvent: null 
      }, 
      templateUrl: 'templates/admin-interact.html', 
      controller: 'VolunteerCtrl' 
      }, 
      { 
      name: 'app.user.admin.roles', 
      url: '/roles', 
      templateUrl: 'templates/roles.html', 
      controller: 'RoleCtrl' 
      }, 
      { 
      name: 'app.user.admin.settings', 
      url: '/settings', 
      templateUrl: 'templates/settings.html', 
      controller: 'SettingsCtrl' 
      } 
     ] 
     } 
    ] 
    }) 

    .state({ 
    name: 'login', 
    url: '/login', 
    templateUrl: 'templates/login.html', 
    controller : 'LoginCtrl' 
    }) 

    .state({ 
    name: 'signup', 
    url: '/signup', 
    templateUrl: 'templates/signup.html', 
    controller : 'SignupCtrl' 
    }); 

    // if none of the above states are matched, use this as the fallback 
    $urlRouterProvider.otherwise('/home'); 
    $ionicConfigProvider.scrolling.jsScrolling(false); 
}); 

私のサイドメニュー、menu.html、template;

<ion-side-menus enable-menu-with-back-views="false"> 
    <ion-side-menu-content> 
    <ion-nav-bar ng-class="{'has-subject': subject}" 
       class="white-font bar-header bar-positive"> 
     <!-- <ion-nav-back-button></ion-nav-back-button> --> 
     <ion-nav-buttons side="left" > 
     <button ng-if="$root.isAdmin" class="button button-icon button-clear ion-navicon" menu-toggle="left"> 
     </button> 
     <button ng-if="!$root.isAdmin" class="button button-icon button-clear ion-home" ui-sref="app.user.home"> 
     </button> 
     </ion-nav-buttons> 
    </ion-nav-bar> 
    <ion-nav-view></ion-nav-view> <!-- ionic's equivalent to ui-view -->  
    </ion-side-menu-content> 
    <ion-side-menu class="side-menu" width="140" side="left"> 
    <ion-header-bar class="white-font bar-header bar-positive"> 
     <h1 class="title">Admin Menu</h1> 
    </ion-header-bar> 
    <ion-content> 
     <ion-list> 
     <ion-item menu-close> 
      <a class="button button-block button-clear button-dark" ui-sref="app.user.admin.calendar({ calendarTitle: 'Calendar', isVolunteerSignup: false })">Calendar</a> 
     </ion-item> 
     <ion-item menu-close> 
      <a class="button button-block button-clear button-dark" ui-sref="app.user.admin.roles">Roles</a> 
     </ion-item> 
     <ion-item menu-close> 
      <a class="button button-block button-clear button-dark" ui-sref="app.user.home">Main Menu</a> 
     </ion-item> 
     <ion-item menu-close> 
      <a class="button button-block button-clear button-dark" ui-sref="app.user.admin.settings">School Settings</a> 
     </ion-item> 
     </ion-list> 
    </ion-content> 
    </ion-side-menu> 
</ion-side-menus> 

次に私の家の景色。

答えて

0

このエラーは、要求していた状態が登録されていないために発生しました。私は私のstateHelperコードの状態名のプロパティを更新してエラーを修正することができました。ここに示すように、親のドット表記法を含まないようにしました。

.config(function(stateHelperProvider, $urlRouterProvider, $ionicConfigProvider) { 

    stateHelperProvider 

    .state({ 
    name: 'app', 
    url: '/app', 
    abstract: true, 
    templateUrl: 'templates/menu.html', 
    controller: 'MenuCtrl', 
    children: [ 
     { 
     name: 'user', 
     url: '/user', 
     abstract: true, 
     template: '<ion-nav-view></ion-nav-view>', 
     children:[ 
      { 
      name: 'home', 
      url: '/home', 
      templateUrl: 'templates/landing.html', 
      controller: 'HomeCtrl' 
      }, 
      { 
      name: 'board', 
      url: '/board', 
      templateUrl: 'templates/pta-board.html', 
      controller: 'BoardCtrl' 
      }, 
      { 
      name: 'events', 
      url: '/events', 
      templateUrl: 'templates/events.html', 
      controller: 'EventsCtrl' 
      }, 
      { 
      name: 'chatrooms', 
      url: '/chat-rooms', 
      templateUrl: 'templates/chat-rooms.html', 
      controller: 'RoomsCtrl', 
      children:[ 
       { 
       name: 'room', 
       url: '/room', 
       params:{ 
        roomId: null, 
        chatters: null 
       }, 
       templateUrl: 'templates/chat-room.html', 
       controller: 'ChatCtrl' 
       } 
      ] 
      }, 
      { 
      name: 'profile', 
      url: '/profile', 
      params:{ 
       isNewUser: null 
      }, 
      templateUrl: 'templates/user-profile.html', 
      controller: 'UserCtrl' 
      } 
     ] 
     }, 
     { 
     name: 'admin', 
     url: '/admin', 
     abstract: true, 
     template: '<ion-nav-view></ion-nav-view>', 
     children:[ 
      { 
      name: 'calendar', 
      url: '/calendar', 
      params:{ 
       selectedEvent: null, 
       calendarTitle: 'Volunteer', 
       isVolunteerSignup: true 
      }, 
      templateUrl: 'templates/rcalendar.html', 
      controller: 'CalendarCtrl' 
      }, 
      { 
      name: 'volunteers', 
      url: '/volunteers', 
      params:{ 
       thisHoursVolunteers: null, 
       thisEvent: null 
      }, 
      templateUrl: 'templates/admin-interact.html', 
      controller: 'VolunteerCtrl' 
      }, 
      { 
      name: 'roles', 
      url: '/roles', 
      templateUrl: 'templates/roles.html', 
      controller: 'RoleCtrl' 
      }, 
      { 
      name: 'settings', 
      url: '/settings', 
      templateUrl: 'templates/settings.html', 
      controller: 'SettingsCtrl' 
      } 
     ] 
     } 
    ] 
    }) 
    .state({ 
    name: 'login', 
    url: '/login', 
    templateUrl: 'templates/login.html', 
    controller : 'LoginCtrl' 
    }) 
    .state({ 
    name: 'signup', 
    url: '/signup', 
    templateUrl: 'templates/signup.html', 
    controller : 'SignupCtrl' 
    }); 

は、私はまだboardeventschatroomsまたはprofile状態に移動することはできませんが、私はもはや、すべてのエラーを取得していません。 admin子どもと他のすべての州(homeなど)は、期待どおりに動作します。

関連する問題