在加载状态之前,我希望使用其他工厂的数据解析工厂。
我的情况:
"taskVariables": function (getTask, getTaskVariables, $stateParams) {
getTask.get({'task': $stateParams.taskId}).success(function(data) {
console.log("I'm here");
return getTaskVariables.get({'processInstanceId': data.processInstanceId});
});
return false;
console.log("I have failed you master")
},
厂:
.factory('getTask', function ($resource) {
return $resource('api/task/get/:task', {'user': '@user', 'task': '@task'}, {
'get': {
method: 'GET',
transformResponse: function (data) {
data = angular.fromJson(data);
return data;
}
}
})
})
问题是我认为一个工厂的加载速度比另一个工厂快,因此在页面加载时数据将是未定义的,但这只是我推测的。
有没有办法通过承诺或某种方式实现这一目标?
提前致谢,
答案 0 :(得分:1)
因为我返回$资源我不能声明成功或失败函数,所以你需要通过给它一个$ promise来改变它,然后是一个然后:
"taskVariables": function (getTask, getTaskVariables, $stateParams) {
return getTask.get({'task': $stateParams.taskId}).$promise.then(function(data) {
return getTaskVariables.get({'processInstanceId': data.processInstanceId});
});
}
感谢this提问/回答
答案 1 :(得分:0)
您忘记返回初始的getTask承诺。
"taskVariables": function (getTask, getTaskVariables, $stateParams) {
return getTask.get({'task': $stateParams.taskId}).success(function(data) {
console.log("I'm here");
return getTaskVariables.get({'processInstanceId': data.processInstanceId});
});
},