2

내 부트 스트랩 선행 입력에서 응답 채우기하지 않으면 다음과 같은 인 선행 입력 작업 getSuggestions()가 약속을 사용하지 않고 배열을 반환하면 잘됩니다.부트 스트랩 선행 입력이 약속

+0

'$ scope.getSuggestions'은 바로 ... 그래서, 당신이 –

+0

작업 할 수 배열을 반환하지 않을 것, 약속을 반환 @ JaromandaX 형용사는 약속과 함께 잘 작동합니다. 전례없는 팝업이 가끔 나타나기 때문에 나는 말할 수 있습니다. – Ayan

답변

0

AngularJS에서 resolve()의 결과는 $ digest cycle 내에서 즉시 비동기 적으로 전파됩니다. 즉, then()에 등록 된 콜백은 다이제스트주기가 발생할 때만 호출됩니다 (나중에).

따라서 $ digest()을 호출하거나 필요한 경우 $ apply()는 다이제스트주기를 실행하는 한 가지 방법입니다.

그래서 주어진 코드를 업데이트 할 필요가 다음

$scope.getSuggestions = viewValue => { 

    let deferred = $q.defer(); 

    getSuggestions(viewValue).then(words => { 
     deferred.resolve(words); 
     $scope.$digest();//this triggers the digest cycle 
    }) 
    .catch(()=>{ 
     deferred.reject([]); 
    }); 

    return deferred.promise; 

};