我正在使用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视图上。有没有办法禁用每个视图? –
那么这是否意味着我的问题源于在视图内使用侧菜单?它是仅限于根的组件吗? –