В моем угловом проекте пользователь принимает EULA, а затем автоматически перенаправляется на свою панель управления, однако при этом перенаправлении DashboardController, кажется, вызывается дважды, DashboardController вызывается на сам маршрут, я проверил, не случайно ли я вызвал его в шаблоне, но я не был. Ниже мой маршрут & контроллер. Кажется, не имеет значения, могу ли я напрямую обращаться к URL-адресу или перенаправлять на контроллере EULA, я получаю тот же результат.Контроллер, вызываемый дважды в Ionic (AngularJS)
Маршруты
.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>
может быть, вы просто включал .js дважды в вашем HTML-источника случайно ? –
Спасибо, но я проверил это, и это, похоже, не так, я также использую другие контроллеры, например LoginController, но это только один раз вызывается, я не 100%, но может ли это что-то сделать? с маршрутизацией? – ChrisBratherton
может быть много причин для этого. Это случилось со мной на прошлой неделе, и это было потому, что я использовал ионный сигнал, и контроллер был прикреплен к дому. Он также запускался в маршрутизации. Если вы предоставите свой html тоже, это может быть причиной. см. этот пост для списка возможных решений - http://stackoverflow.com/questions/15535336/combating-angularjs-executing-controller-twice –