同步执行angularjs中的函数

时间:2016-06-17 02:25:53

标签: javascript angularjs

我在我的应用程序中使用angularjs 1.0。 我在cshtml页面上有一个下拉列表

<select tabindex="2" id="Employee" ng-model="models.SelectedEmployee" ng-change="changeEmployee()" disabled="disabled" class="Answer" size="6">
<option value="-1" selected="selected">Select</option>

<option ng-repeat="option in models.Employees | orderBy:'EmployeeName'" value="{{option.EmployeeKey}}"> {{option.EmployeeName}} - {{option.EmployeeKey}}</option>

</select>

在更改Employee时,我正在调用函数changeEmployee()

 $scope.changeEmployee = function () {

$scope.ClearMessages(); //function to clear message displayed in label field (lblMessage)
$scope.FetchAllEmployeeData(); //fetch Employee details like address, dependents details 


}

FetchAllEmployeeData函数从数据库中提取emaployee详细信息,如果数据库中存在详细信息,则在标签字段(lblMessage)中添加消息,例如:找到地址详细信息,发现家属详细信息。

当用户从下拉列表中选择员工姓名时,一切正常。但是当用户使用向下键按钮快速浏览每个Employee时,FetchAllEmployeeData函数会继续为每个员工添加消息。 我认为这是因为FetchAllEmployeeData不等待ClearMessage函数完成。

请帮我处理这种情况。

1 个答案:

答案 0 :(得分:0)

据我了解$scope.FetchAllEmployeeData();执行ajax请求并获取一些信息,因此它使用了一些$http$resourceRestangular或类似的内容。 几乎所有这些都可以与PromisesQ一起使用,所以基本上你需要进行一系列方法调用

喜欢

// $scope.FetchAllEmployeeData = function(){ return $http.get(....)};
$scope.FetchAllEmployeeData().then($scope.ClearMessages);