Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.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

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
Javascript AngularJS、datatables、$q.defer和数据重新加载_Javascript_Angularjs_Angular Promise_Angular Datatables - Fatal编程技术网

Javascript AngularJS、datatables、$q.defer和数据重新加载

Javascript AngularJS、datatables、$q.defer和数据重新加载,javascript,angularjs,angular-promise,angular-datatables,Javascript,Angularjs,Angular Promise,Angular Datatables,我在尝试正确解决以下情况时面临一个问题: 当控制器加载时,它从API(项目)获取数据 我在第2页上看到了datatables,只有在加载第一个数据(获取项目地址和项目合作伙伴)时才应该加载,但是我可以向地址或合作伙伴添加项目,然后我想重新加载该部分 我确实是这样解决的,但我觉得这是多余的 Project.findOne({filter:{where:{nr:$stateParams.projectNr}}}),函数(结果){ $scope.data=结果; AddressLink.find({

我在尝试正确解决以下情况时面临一个问题:

当控制器加载时,它从API(项目)获取数据 我在第2页上看到了datatables,只有在加载第一个数据(获取项目地址和项目合作伙伴)时才应该加载,但是我可以向地址或合作伙伴添加项目,然后我想重新加载该部分

我确实是这样解决的,但我觉得这是多余的

Project.findOne({filter:{where:{nr:$stateParams.projectNr}}}),函数(结果){
$scope.data=结果;
AddressLink.find({filter:{where:{projectId:$scope.data.id}}}),函数(地址){
延迟地址。解决(地址);
});
});
var deferAddresses=$q.defer();
var deferPartners=$q.defer();
$scope.dtOptions=DTOptionsBuilder.fromfnomise(函数(){
if($scope.data.id){
var defer=$q.defer();
AddressLink.find({filter:{where:{projectId:$scope.data.id}}}),函数(地址){
延迟。解决(地址);
});
回报、承诺;
}否则{
回报、承诺;
}
})
$scope.nested.dtInstance={};
$scope.nested.dtInstance.reloadData(null,false)

在这里回答我自己的问题。。。这就是我所做的:

var promiseProject=新承诺(函数(解析、拒绝){
Project.findOne({filter:{where:{nr:$stateParams.projectNr}}}),函数(result){
决心(结果);
});
});
$scope.loadAddress=函数(){
var defer=$q.defer();
promiseProject.then(功能(数据){
AddressLink.find({filter:{where:{projectId:data.id},包括:'address'}},函数(addresses){
延迟。解决(地址);
});
});
回报、承诺;
}

$scope.dtOptions=DTOptionsBuilder.fromfnomise($scope.loadAddress())
在这里回答我自己的问题。。。这就是我所做的:

var promiseProject=新承诺(函数(解析、拒绝){
Project.findOne({filter:{where:{nr:$stateParams.projectNr}}}),函数(result){
决心(结果);
});
});
$scope.loadAddress=函数(){
var defer=$q.defer();
promiseProject.then(功能(数据){
AddressLink.find({filter:{where:{projectId:data.id},包括:'address'}},函数(addresses){
延迟。解决(地址);
});
});
回报、承诺;
}

$scope.dtOptions=DTOptionsBuilder.fromfnomise($scope.loadAddress())
对您的情况不完全清楚,但您是否考虑过使用等待所有服务器请求数据完成?这样,您可以一次处理所有内容,并且可能避免将
AddressLink
搜索调用加倍。是的,我也尝试过使用
$q.all()
,但是没有可用性,因为数据表需要能够重新加载自己…对于您的情况还不完全清楚,但是,您是否考虑过使用等待所有服务器数据请求完成?这样,您可以一次处理所有内容,并且可能避免将
AddressLink
搜索调用加倍。是的,我也尝试了
$q.all()
,但没有可用性,因为数据表需要能够重新加载自己。。。