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
上解析。非常微妙的变化造成了所有的不同