我正在使用最新版本的IonicFramework,它在引擎盖下使用 angular-ui-router 0.2.8。这是我第一次使用 ui-router,所以我可能犯了一个愚蠢的错误,但我不知道它是什么。当我导航到刚刚添加的新状态/一组视图时,我收到“超出最大调用堆栈大小”错误,并且 Chrome 选项卡崩溃。
我的基本 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");
});
只需使用上述路由配置启动应用程序就会导致错误,无需其他交互。
以下是我的看法...
事件.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>
选择事件.html:
<div><br/><br/><br/>Swipe right to choose an Event</div>
除了调用堆栈无限递归之外,我在控制台中没有收到任何其他错误。知道我做错了什么吗?