【发布时间】:2015-08-14 15:42:10
【问题描述】:
在我的 Angular 项目中,用户接受 EULA 然后自动重定向到他们的仪表板,但是,在这个重定向上,仪表板控制器似乎被调用了两次,仪表板控制器在路由本身上被调用,我检查了是否我不小心在模板中再次调用了它,但我没有。下面是我的路线和控制器。我是直接访问 URL 还是通过 EULA 控制器上的重定向访问 URL 似乎并不重要,我得到相同的结果。
路线
.config(function($httpProvider, $stateProvider, $urlRouterProvider) {
$httpProvider.interceptors.push('httpRequestInterceptor');
$urlRouterProvider.otherwise('/');
$stateProvider
.state('login', {
url: '/',
templateUrl: 'templates/login.html',
data: {
requireLogin: false
}
})
.state('eula', {
url: '/eula',
templateUrl: 'templates/eula.html',
data: {
requireLogin: true
}
})
.state('dashboard', {
url: '/groups',
templateUrl: 'templates/dashboard.html',
data: {
requireLogin: true
}
})
});
控制器:
App.controller('DashboardController', ['$scope', 'RequestService', '$state', '$rootScope', function($scope, RequestService, $state, $rootScope){
alert('test');
}]);
有什么想法吗?
根据评论添加了我的 HTML
index.html
<body ng-app="App">
<ion-nav-bar class="bar-positive nav-title-slide-ios7" align-title="center">
<ion-nav-back-button class="button-icon ion-arrow-left-c"></ion-nav-back-button>
</ion-nav-bar>
<ion-nav-view class="slide-left-right"></ion-nav-view>
<ui-view></ui-view>
</body>
dashboard.html
<div class="groups" ng-controller="DashboardController">
<ion-view title="App">
<ion-nav-buttons side="right">
<a ui-sref="groupcreate"><span class="icon ion-ios-plus-outline"></span></a>
</ion-nav-buttons>
<ion-content class="padding">
<div class="row">
<div class="col-50" ng-repeat="group in groups">
{{ group }} 1
</div>
</div>
</ion-content>
</ion-view>
</div>
【问题讨论】:
-
也许您只是不小心在 HTML 源代码中包含了两次 .JS?
-
谢谢,但我已经检查过了,但似乎并非如此,我也在使用其他控制器,例如 LoginController 但这只被调用一次,我不是 100%但这可能与路由有关吗?
-
这可能有很多原因。上周发生在我身上,这是因为我使用的是 ionic 并且控制器连接到 dom。它也在路由中被触发。如果您也提供您的 html,这可能是原因。请参阅此帖子以获取可能的解决方案列表 - stackoverflow.com/questions/15535336/…
-
感谢@Paul Fitzgerald,我已将我的 HTML 包含在问题中。如您所见,我不再在路由中调用 DashboardController,而是在 dashboard.html 文件中。
-
您能否添加一个 plunkr,以便我们可以看到您的模板以及您的实际路由?
标签: javascript angularjs ionic-framework angularjs-routing angularjs-controller