AngularJS / Ionique de routage à l'aide de $stateProvider - contrôleur n'est pas le rechargement de la deuxième fois qu'un état est appelé
Question D'Origine
Je suis le développement d'une application mobile à l'aide de l'Ionic Framework et AngularJS et je vais avoir des problèmes avec les contrôleurs de ne pas recharger une fois qu'ils ont été initialisés.
L'un des transitions d'état (de 'app.postbox-details'
à 'app.audit-questions'
) doit passer un paramètre à la 'app.audit-questions'
contrôleur mais ce contrôleur ne pas se mettre à jour avec le nouveau paramètre car il n'est pas de rechargement.
Exemple De Code
app.js fichier - config
angular.module('sf-maintenance', ['ionic', 'starter.controllers', 'starter.services', 'ngCordova'])
.config(function ($stateProvider, $urlRouterProvider, $httpProvider) {
$stateProvider
.state('home', {
url: '/home',
templateUrl: 'templates/home.html',
controller: 'HomeCtrl',
})
.state('app', { //app state being the side-menu
url: '/app',
abstract: true, //means that this state will never be activated directly, users will always go to a child state instead.
templateUrl: 'templates/side-menu.html',
controller: 'MenuCtrl'
})
.state('app.postbox-details', {
url: '/postbox-details',
views: {
'menuContent': {
templateUrl: 'templates/postbox-details.html',
controller: 'PostboxDetailsCtrl'
}
}
})
.state('app.audit-questions', {
url: '/audit-questions/:postboxGuid',
views: {
'menuContent': {
templateUrl: 'templates/audit-questions.html',
controller: 'AuditCtrl'
}
}
})
$urlRouterProvider.otherwise('/home');
});
controller.js fichier (à gauche le code qui n'est pas pertinent)
angular.module('starter.controllers', [])
.controller('HomeCtrl', function ($scope) {
})
.controller('MenuCtrl', function ($scope) {
})
.controller('PostboxDetailsCtrl', function ($scope, $ionicLoading, $ionicPopup, $cordovaBarcodeScanner, $state, DataService) {
$scope.postboxGuid = DataService.getNewGUID();
//Rest of the controller functions are below
})
.controller('AuditCtrl', function ($scope, $ionicSlideBoxDelegate, $stateParams, DataService) {
$scope.auditDetails = {
postboxGuid: $stateParams.postboxGuid
};
});
Affichage de code de navigation
Le code de la vue d'effectuer des navigations toute utilisation <a>
tags:
- À partir de la page d'accueil de la boîte aux lettres-affichage détails:
<a class="button button-block button-dark icon-right ion-chevron-right" href="#/app/postbox-details">New inspection</a>
- À partir de la boîte aux lettres-affichage des détails de la vérification des questions vue:
<a class="button button-block button-dark icon-right ion-chevron-right" ng-click="saveFormData()"
ng-href="#/app/audit-questions/{{postboxGuid}}">New audit</a>
Si quelqu'un sait comment obtenir les contrôleurs pour recharger une fois qu'il a été initialisé ou si je vais sur ce problème de la mauvaise façon pourriez-vous me guider pour une méthode qui marche?
Mise À Jour De L'Information
J'ai vu récemment une une question relative à la et la réponse de @Radim Köhler a souligné la réponse dans cette question qui fournit de bonnes informations sur pourquoi il ne peut pas être une bonne idée d'utiliser cache:false
sur une vue en raison de la performance.
J'ai pensé que je voudrais partager cela parce que, dans certaines situations, vous pouvez profiter de plus de performance en utilisant l'une des Ionique intégré dans la vue événements de cycle de vie d'exécuter du code sans avoir à désactiver l'affichage de la mise en cache.
ui-sref
au lieu de ng-hrefpour la première ancre utilisation
ui-sref="app.postbox-details"
& pour la deuxième ancre utilisation ui-sref="app.audit-questions({postboxGuid: postboxGuid})"
au lieu de leur hrefLa plupart des fois les questions liées aux contrôleurs sont beaucoup de fautes de frappe et d'injection d'erreur; vérifier ce que vous injecter dans chaque contrôleur et d'utiliser le navigateur de la console pour déboguer les erreurs
OriginalL'auteur Will.Harris | 2015-01-22
Vous devez vous connecter pour publier un commentaire.
Vues standard sont mis en cache dans ionique. La mise en cache peut être configuré dans la vue ou stateprovider.
http://ionicframework.com/docs/api/directive/ionNavView/
ion-nav-view
Je pense que ce problème n'existe qu'avec la dernière version de l'Ionique. J'ai une application avec de vieux ionique version où j'ai cache=false et les contrôleurs fonctionnent encore correctement.
OriginalL'auteur Toxus