Javascript AngularJs route.reload();无限循环

Javascript AngularJs route.reload();无限循环,javascript,angularjs,angularjs-scope,angularjs-routing,Javascript,Angularjs,Angularjs Scope,Angularjs Routing,我是AngularJS的新手,我有一些由drupal生成的Jsonp文件。 当我试图在我的视图上显示我文章的信息时,我的问题来了 <!-- Script JS --> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script> <script src="http://code.angularjs.org/1.2.14/angul

我是AngularJS的新手,我有一些由drupal生成的Jsonp文件。 当我试图在我的视图上显示我文章的信息时,我的问题来了

<!-- Script JS -->
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.14/angular.min.js"></script>
<script src="http://code.angularjs.org/1.2.14/angular-sanitize.js"></script>
<script src="http://code.angularjs.org/1.2.14/angular-route.js"></script>
<script src="http://code.angularjs.org/1.2.14/angular-resource.js"></script>

<script>
// mon module app contient les module de Route et de Sanitize 
var app = angular.module('app', ['ngSanitize', 'ngRoute', 'ngResource'])


// systeme de routing
app.config(function($routeProvider){
    $routeProvider
        .when('/home', {templateUrl: 'partials/home.html', controller: 'contentsCtrl'})
        .when('/test/:nid', {templateUrl: 'partials/test.html', controller: 'contentsCtrl'})
        .otherwise({redirectTo : '/'});
})

app.factory('ContentFactory', function($http, $q){
    var factory = {
        contents : false,
        resource : $http.jsonp('http://achahada.fr/json/articles/node.jsonp?callback=JSON_CALLBACK'),//objet recourse qui me permettra de changer la source de mon json en fonction de l'id demander
        getContents : function(){
            var deferred = $q.defer();
            factory.resource
                .success(function(data, status){
                    factory.contents = data;
                    deferred.resolve(factory.contents);
                })
                .error(function(data, status){
                    deferred.reject('Impossible de récupérer les articles');
                });
            return deferred.promise;
        },
        getContent : function(nid){
            var content = {};
            var deferred = $q.defer();
            angular.forEach(factory.contents, function(value, key){
                if(value.nid == nid){
                    //si il y a un nid alors la source de mon content sera le fichier json assortie a celui-ci
                    factory.resource = $http.jsonp('http://achahada.fr/json/articles/node/'+nid+'.jsonp?callback=JSON_CALLBACK');
                    factory.resource
                    .success(function(data, status){
                        factory.contents = data;
                        deferred.resolve(factory.contents);
                    })
                    .error(function(data, status){
                        deferred.reject('Impossible de récupérer les articles');
                    });
                    return deferred.promise;
                    content = value;
                }
            });
            return content;
        },
    }
    return factory;
})


app.controller('contentsCtrl', function ($scope, ContentFactory, $routeParams, $route){
        $scope.loading = true; // affichera un message de chargement
        var content = ContentFactory.getContent($routeParams.nid);
        //$scope.reload = $route.reload();
        $scope.contents = ContentFactory.getContents().then(function(contents){
                $scope.loading = false; // dès qu'on a finie de charger on arrete le chargement
                $scope.contents = contents;
            }, function(msg){
                alert(msg);
            })

});


</script>

//mon模块应用程序CONTIENTLES模块去路由和去消毒
var app=angular.module('app',['ngSanitize','ngRoute','ngResource']))
//系统去路由
app.config(函数($routeProvider){
$routeProvider
.when('/home',{templateUrl:'partials/home.html',controller:'contentsCtrl'})
.when('/test/:nid',{templateUrl:'partials/test.html',controller:'contentsCtrl'})
。否则({重定向到:'/'});
})
app.factory('ContentFactory',函数($http,$q){
变量工厂={
内容:假,
资源:$http.jsonp('http://achahada.fr/json/articles/node.jsonp?callback=JSON_CALLBACK“),//目标追索权要求变更方在需求方的基础上进行变更
getContents:function(){
var deferred=$q.deferred();
工厂资源
.成功(功能(数据、状态){
factory.contents=数据;
延迟。解决(工厂。内容);
})
.错误(功能(数据、状态){
延期。拒绝(“不可能的产品”);
});
回报。承诺;
},
getContent:函数(nid){
var内容={};
var deferred=$q.deferred();
angular.forEach(工厂内容、功能(值、键){
如果(value.nid==nid){
//这是一个非常重要的内容来源
factory.resource=$http.jsonp('http://achahada.fr/json/articles/node/“+nid+”.jsonp?callback=JSON_callback”);
工厂资源
.成功(功能(数据、状态){
factory.contents=数据;
延迟。解决(工厂。内容);
})
.错误(功能(数据、状态){
延期。拒绝(“不可能的产品”);
});
回报。承诺;
内容=价值;
}
});
返回内容;
},
}
返回工厂;
})
应用程序控制器('contentsCtrl',函数($scope,ContentFactory,$routeParams,$route){
$scope.loading=true;//附加一条联合国取消计费消息
var content=ContentFactory.getContent($routeParams.nid);
//$scope.reload=$route.reload();
$scope.contents=ContentFactory.getContents().then(函数(内容){
$scope.loading=false;//dès qu'on a finie de charge on arrete le charge
$scope.contents=目录;
},函数(msg){
警报(msg);
})
});
当我想通过partials/test:nid.html链接获取文章时,我成功了,其中nid=文章的id。 但如果我想再看一次,什么都不会发生。所以我尝试了$route.reload();但这让我产生了无限的请求循环


一些帮助plz

问题是您正在调用
$route.reload
函数并将结果添加到
$scope
。我假设您真正想要的是将
$route.reload
函数本身添加到
$scope
。您需要将代码更改为以下代码之一:

$scope.reload = $route.reload;

$scope.reload = function(){ $route.reload(); };

将$route.reload放入$routeChangeSuccess中

$rootScope.$on('$routeChangeSuccess', function() {
    $route.reload();
});