2016-06-09 5 views
0

Я пытаюсь реализовать простой тип bootstrap, где ответ получает запрос через http-вызов. Я получаю ответ отлично, но, похоже, последнее значение из вызова службы не получая привязки к переменной области видимости, из которой читается typeahead.Невозможно связать последние данные от http-вызова до typeahead

$ scope.onChangeCallBack = функция (viewValue) {

 var program = $scope.program.name; 
     var occupancyType = $scope.occupancyType.name; 
     var isStorage = $scope.isBuildingStorage; 
     var isFranchise = $scope.isFranchise; 
     var isLeased = $scope.isLeased; 
     var isBarBuilding=$scope.isBarBuilding; 
     console.log("program:"+program+"//occupancyType:"+occupancyType+"//isStorage:"+isStorage+"//isFranchise:"+isFranchise+"//+isBarBuilding"+isBarBuilding+"//viewValue"+viewValue); 
     var param = 
     { 
      searchString: viewValue, 
      filterCriteria: { 
       isBar: true/*isBarBuilding*/, 
       isFranchise: false/*isFranchise*/, 
       isMercantile: true/*isLeased*/, 
       program: program, 
       occupancyType:"tennat" 
      } 
     } 
     var promise = AEBusinessOwnerService.getBuildingClassification(param); 
     promise.then(function(data) { 
      console.log(JSON.stringify(data.results)); 
      $sccope.classificationTypeAhead = data.results; 
      }); 

     }; 

Результат поиска, которые будут отображаться после того, как 4 слова введенные виден только после ввода 5-го символа. Я не уверен, что пропало.

+1

Вы еще не исправили опечатку в своем коде? Внутри обещания есть $ sccope.classificationTypeAhead. $ с ошибкой. – DanielC

+0

Да, я исправил его. -Ranjan –

ответ

0

Если бы я должен был догадаться, я бы предположил, что AEBusinessOwnerService.getBuildingClassification не возвращает обещание, которое интегрировано с циклом дайджеста Углового (то есть, что-то основано на $ q). Попробуйте сделать это:

promise.then(function(data) { 
    $scope.$apply(function() { 
     console.log(JSON.stringify(data.results)); 
     $scope.classificationTypeAhead = data.results; 
    }); 
}); 
+0

Если я сделаю так, как описано выше, я получаю ошибку как Ошибка: [$ rootScope: inprog] $ digest уже выполняется - Ranjan –

+0

Тогда 'AEBusinessOwnerService.getBuildingClassification' делает это для вас, и это isn это решение вашей проблемы. –

0

Это поддерживает ответ на Джонатана, но я не могу комментировать еще так:

promise.then(function(data) { 
    $scope.$apply(function() { 
     console.log(JSON.stringify(data.results)); 
     $scope.classificationTypeAhead = data.results; 
    }); 
}); 

If I do as above i get the error as Error: [$rootScope:inprog] $digest already in progress

Как указано ошибка, в размере $ дайджеста продолжается, вам может решить это, сделав это

if(!$scope.$$phase) { 
    $scope.$apply(function() { 
     console.log(JSON.stringify(data.results)); 
     $scope.classificationTypeAhead = data.results; 
    }); 
}