Javascript 如何在父作用域获取restful数据后在子作用域中运行函数
我的页面有父作用域和子作用域。子范围显示属于父范围中数据的列表 比如说, 有一个部门有三名员工。部门在父范围内,员工在子范围内检索 问题是父范围通过restful api调用获取部门。然后,子范围调用另一个api来获取部门中的员工 通过这样做,子范围需要知道父范围中的部门。但是,chlid scope api调用通常在父级获取部门之前触发。因此,即使有员工,也没有员工不高兴 我正在寻找解决方案。如何确保在员工之前获取部门 我不知道您的代码是如何工作的,但我的想法是,执行department API调用的函数应该返回一个承诺,子控制器可以使用该承诺Javascript 如何在父作用域获取restful数据后在子作用域中运行函数,javascript,angularjs,rest,scope,Javascript,Angularjs,Rest,Scope,我的页面有父作用域和子作用域。子范围显示属于父范围中数据的列表 比如说, 有一个部门有三名员工。部门在父范围内,员工在子范围内检索 问题是父范围通过restful api调用获取部门。然后,子范围调用另一个api来获取部门中的员工 通过这样做,子范围需要知道父范围中的部门。但是,chlid scope api调用通常在父级获取部门之前触发。因此,即使有员工,也没有员工不高兴 我正在寻找解决方案。如何确保在员工之前获取部门 我不知道您的代码是如何工作的,但我的想法是,执行department AP
myApp.controller('DepartmentCtrl', function($scope, $q){
$scope.department = '';
$scope.getDepartment = function(){
var deferred = $q.defer();
// Here, we simulate an HTTP call or another asynchronous operation
setTimeout(function(){
$scope.department = 'AnAwesomeDepartment';
deferred.resolve();
}, 1500);
return deferred.promise;
}
});
myApp.controller('EmployeesCtrl', function($scope, $q){
$scope.employees = [];
$scope.getEmployees = function(){
$scope.$parent.getDepartment().then(
function(){
$scope.employees = ['Mark', 'Jane', 'Lisa'];
}
);
}
// Get everything
$scope.getEmployees();
});
当然,您可以考虑一些改进,例如缓存部门,或者在进入子状态之前。您可以在子范围中查看部门模型,并且无论何时从API获取部门模型,都可以触发员工API 基本上就是我说的
我希望这能解决您的问题。您能提供您已有的代码吗?在对子作用域中的员工数据进行API调用之前,请检查部门数据是否可用,如果不可用,请不要运行调用子作用域将在其他页面中重新使用。所以,在我的例子中,使用子函数调用依赖项不是一个好主意。我喜欢将范围变量从父对象传递给子对象。