Javascript ui路由器-将承诺结果传递给嵌套解析
我有一个具有嵌套解析的ui路由器,如下所示:Javascript ui路由器-将承诺结果传递给嵌套解析,javascript,angularjs,json,angular-ui-router,Javascript,Angularjs,Json,Angular Ui Router,我有一个具有嵌套解析的ui路由器,如下所示: $stateProvider .state('route', { url: '/route', templateUrl: 'mypage.aspx', resolve: { getjson: function (readJson,$http) { var readjsong
$stateProvider
.state('route', {
url: '/route',
templateUrl: 'mypage.aspx',
resolve: {
getjson: function (readJson,$http) {
var readjsonget = $http.get('files.json');
readjsonget.then(function (result) {
return result.data;
}, function (ex) {
console.log('GET error', ex);
});
},
load: function ($q, filesInject, getjson) {
files = getjson;
$log.info(2);
return $q.all(files.map(filesInject.inject));
}
}
})
我读取了一个json,希望将内容传递给第二个resolve函数
我已经尝试了很多方法,但总是在第二次功能后触发成功承诺
如何解决这个问题?在promise readjsonget中添加一个返回
$stateProvider
.state('route', {
url: '/route',
templateUrl: 'mypage.aspx',
resolve: {
getjson: function (readJson, $http) {
var readjsonget = $http.get('files.json');
return readjsonget.then(function (result) {
return result.data;
}, function (ex) {
console.log('GET error', ex);
});
},
load: function ($q, filesInject, getjson) {
files = getjson;
$log.info(2);
return $q.all(files.map(filesInject.inject));
}
}
})
像这样的怎么样:
$stateProvider
.state('route', {
url: '/route',
templateUrl: 'mypage.aspx',
resolve: {
getjson: function (readJson,$http) {
var deferred = $q.defer();
var readjsonget = $http.get('files.json');
readjsonget.then(function (result) {
deferred.resolve(result);
}, function (ex) {
deferred.reject(ex);
});
return deferred.promise;
},
load: function ($q, filesInject, getjson) {
var deferred = $q.defer();
files = getjson;
$log.info(2);
files.then(function(data){
deferred.resolve(data.map(mapFunction));
}, function(error){
deferred.reject(error);
});
return deferred.promise;
}
}
})
例如:将此移动到服务