2016-06-17 34 views
0

我在我的应用程序中使用了angularjs 1.0。 我有一个下拉我CSHTML页同步执行angularjs中的函数

<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> 

在员工的变化,我调用一个函数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)中添加消息,例如找到详细地址详细信息,找到了相关详细信息

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

请帮我处理这种情况。

+0

请制作提琴他会有助于解决 –

+1

如果FetchAllEmployeeData功能是使用$ http,然后ClearMessages()调用移动到FetchAllEmployeeData的$ http.success里面... –

+0

谢谢이동권!!它的工作现在。 –

回答

0

据我了解$scope.FetchAllEmployeeData();做Ajax请求,并得到了一些信息,所以它使用了一些$http$resourceRestangular或类似的东西。 几乎所有的人都可以用PromisesQ工作,所以基本上你需要方法的调用链

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