我在我的应用程序中使用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函数完成。
请帮我处理这种情况。
答案 0 :(得分:0)
据我了解$scope.FetchAllEmployeeData();
执行ajax请求并获取一些信息,因此它使用了一些$http
或$resource
或Restangular
或类似的内容。
几乎所有这些都可以与Promises
或Q
一起使用,所以基本上你需要进行一系列方法调用
喜欢
// $scope.FetchAllEmployeeData = function(){ return $http.get(....)};
$scope.FetchAllEmployeeData().then($scope.ClearMessages);