Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 未调用角度路由提供程序解析_Angularjs_Route Provider - Fatal编程技术网

Angularjs 未调用角度路由提供程序解析

Angularjs 未调用角度路由提供程序解析,angularjs,route-provider,Angularjs,Route Provider,我在路由提供程序中设置了一个简单的解析函数。差不多 .config(['$routeProvider', 'Constants', function config($routeProvider, Constants) { $routeProvider. when('mypage', { templateUrl: 'partials/mypage.tpl.html', controller: 'MyPageCtrl',

我在路由提供程序中设置了一个简单的解析函数。差不多

.config(['$routeProvider', 'Constants', function config($routeProvider, Constants) {
    $routeProvider.
        when('mypage', {
            templateUrl: 'partials/mypage.tpl.html',
            controller: 'MyPageCtrl',
            reloadOnSearch: false,
            resolve: {
                factory: 'MyPageResolve'
            }
        })
)];
该工厂在如下模块中声明:

.factory('MyPageResolve', ['$q', '$log', 'someAPI',
    function ($q, $log, someAPI) {
        var defer = $q.defer();
        var postUserFunc = function () {

            someAPI.get(
                function(data, status) { //$http.get().success() func
                    defer.resolve();
                }
            );

        };
        return defer.promise;
}]);
在直接刷新或第一次加载时发生的情况,会命中此解析方法。但是,如果我有一个$location.url('/mypage');从一条路线更改为此路线,angular不会重新解析此控制器


我可能没有以正确的方式思考解决问题,如果是这样,我会以“角度”的方式提出建议。我希望在视图之前加载所有这些信息,并且这些信息根据路由参数而变化

最后,我需要把工厂变成一个函数。工厂作为一个单件,所以它只运行一次

所以我让我的工厂看起来像:

var myPageResolve = ['$q', '$log', 'someAPI',
function ($q, $log, someAPI) {
    var defer = $q.defer();
    var postUserFunc = function () {

        someAPI.get(
            function(data, status) { //$http.get().success() func
                defer.resolve();
            }
        );

    };
    return defer.promise;
}]);
而不是在
'myPageResolve'
上解析,而是在
myPageResolve
上解析。非常微妙的变化造成了所有的不同