Bonjour,

Voilà j'ai un petit probleme j'ai un site avec deux pages : product et chat. AngularJS charge les pages php une et une seul fois à la création.

Et je voudrais lors de l'actionnement du controlleur productController que ma page product soit à nouveau chargé (ayant des requetes qui recupere les produits de la BDD).

j'ai essayé $scope.reload() mais il me semble que je me retrouve avec une boucle infinie de rechargement

Voilà mon code ci-dessous

var myApp = angular.module('myApp',['ngRoute']);

myApp.config(function($routeProvider) {

    $routeProvider

        .when('/', {
            templateUrl: 'product.php',
            controller: 'productController'
        })
        .when('/chat', {
            templateUrl: 'chat.php',
            controller: 'chatController'
        })
        .otherwise({
            redirectTo: '/'
        })

});

myApp.controller('productController', ['$scope','$route', function($scope,$route) {
    //ici j'aimerai refresh product.php
}]);

myApp.controller('chatController',['$scope', '$log', function($scope, $log) {

}]);

4 réponses


AminMe
Auteur
Réponse acceptée

Merci pour vos réponses

J'ai trouvé néamoins une solution à mon problème. Quand je change de lien (page) j'execute ce bout de code là (trouvé sur github + stackoverflow)

$('a').on('click',function(event){
        var currentPageTemplate = $route.current.templateUrl;
        $templateCache.remove(currentPageTemplate);
        $route.reload();
    });

Celà recharge dynamiquement le contenu de ma page/controller (et pas toute ma page (window) : d'ou l'interêt)

Salut, je pense que tu trouveras ta réponse ici
Google est une ressource inépuisable :)

AminMe
Auteur

Merci d'avoir répondu si vite, mais ce n'est pas du tout ce que je veux (je crois). Enfin ça m'a l'air trop complexe il faut instaurer une factory un timeout : lui il gère ça avec un timer moi je veux que l'action s'execute à chaque appel d'un controller
J'ai déjà fait le tour de Google :p (je crois)

Sur ton lien (merci d'ailleurs j'ai pu y apprendre des choses) la personne utilise une sorte d'event entre controller, j'avais déjà expérimenté ça hier ça ne marche pas du tout chez moi ^^'

dans le controller de product

 $scope.$on('newList', function(ev, mylist) {
        $scope.name = 'event';
        alert ('je vais refresh la page');
    });

dans le controller de chat

$scope.$on('newList', function(ev, mylist) {
        ev.stopPropagation();
    });

Aurait tu une idée ?

Bonjour,

je pense qu'il s'agit d'un problème de cache..

Cependant ta structure me paraît bizarre, tu ne récupéres pas tes données depuis le javascript, tu dois obligatoirement regénérer la page au niveau php ? Cela me semble surprenant..

Néamoins tente ceci :

myApp.run(["$rootScope","$templateCache",function($rootScope, $templateCache) {
    $rootScope.$on('$routeChangeStart', function(event, next, current) {
        if (typeof(current) !== 'undefined'){
            $templateCache.remove(current.templateUrl);
        }
    }]);