我正在使用IonicFramework的最新版本,它使用引擎蓋下的angular-ui-router 0.2.8。這是我第一次使用ui-router,所以我可能犯了一個愚蠢的錯誤,但我無法弄清楚它是什麼。當我導航到剛添加的新狀態/視圖集時,出現「超出最大調用堆棧大小」錯誤,Chrome選項卡崩潰。angular-ui-router嵌套視圖和「RangeError:超出最大調用堆棧大小」
我的基本HTML是非常簡單的:
<body ng-app="checkinApp" ng-controller="GlobalCtrl">
<nav-view></nav-view>
</body>
這裏是相關畫面的路由配置:
app.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('event', {
url: "/event"
,templateUrl: "templates/event.html"
,controller: "MainCtrl"
})
.state('event.chooseEvent', {
url: "/choose"
,templateUrl: "templates/chooseEvent.html"
,controller: "MainCtrl"
})
.state('event.eventCheckin', {
url: "/checkin"
,templateUrl: "templates/eventCheckin.html"
,controller: "MainCtrl"
});
// if none of the above are matched, go to this one
$urlRouterProvider.otherwise("/event/choose");
});
簡單地開始上述路由配置的應用程序導致錯誤,不其他交互是必要的。
這裏是我的看法......
event.html:
注意<nav-view></nav-view>
塊,在這裏我很期待孩子的觀點來呈現。
<side-menus>
<!-- page content -->
<pane side-menu-content>
<header class="bar bar-header bar-positive">
<button class="button button-icon icon ion-navicon" ng-click="toggleMenu()"></button>
<h1 class="title">Checkin</h1>
</header>
<nav-view></nav-view>
</pane>
<side-menu side="left">
<content>navigation menu content here</content>
</side-menu>
</side-menus>
eventCheckin.html:
<content has-header="true" on-refresh="refreshAttendees()">
<!-- for pull to refresh -->
<refresher></refresher>
<ul class="list">
<li
ng-repeat="person in attendees | orderBy:'firstname' | orderBy:'lastname'"
item="person"
class="item item-toggle"
>
{{person.lastname}}, {{person.firstname}}
<label class="toggle">
<input type="checkbox" ng-checked="person.arrived" ng-click="toggleArrived(person)" />
<div class="track">
<div class="handle"></div>
</div>
</label>
</li>
</ul>
</content>
chooseEvent.html:
<div><br/><br/><br/>Swipe right to choose an Event</div>
從調用堆棧無限遞歸
除此之外,我沒有收到任何其他錯誤控制檯。任何想法我做錯了什麼?
我把側邊菜單放在視圖中,因爲我不希望它在所有視圖上都可用;特別是在auth視圖上。有沒有辦法禁用每個視圖? –
那麼這是否意味着我的問題源於在視圖內使用側菜單?它是僅限於根的組件嗎? –