2016-06-17 2 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 детали из базы данных, и если детали подарки в databse, добавляет сообщения в поле метки (lblMessage), например Найдено адреса, найденные детали зависимых.

Все работает нормально, когда пользователь выбирает имя сотрудника из раскрывающегося списка. Но когда пользователь использует кнопку «вниз» для быстрого перехода через каждого сотрудника, функция FetchAllEmployeeData продолжает добавлять сообщения для каждого сотрудника. Я думаю, что это потому, что FetchAllEmployeeData не дождался завершения функции ClearMessage.

Пожалуйста, помогите мне справиться с этим сценарием.

+0

заведите скрипку он будет полезным, чтобы исправить –

+1

, если функция FetchAllEmployeeData использует $ http, затем вызов ClearMessages() перемещается внутри $ http.success из FetchAllEmployeeData ... –

+0

Спасибо 이동권 !! Теперь работает. –

ответ

0

Как я понимаю $scope.FetchAllEmployeeData(); делает запрос AJAX и получать некоторую информацию, поэтому он использует некоторые $http или $resource или Restangular или что-то подобное. Почти все они могли бы работать с Promises или Q, так что в основном вы должны сделать цепочку вызовов метода

как

// $scope.FetchAllEmployeeData = function(){ return $http.get(....)}; 
$scope.FetchAllEmployeeData().then($scope.ClearMessages); 
Смежные вопросы