2016-06-09 43 views
0

我想实现一个简单的引导程序typeahead响应获取通过http调用。我收到了完美的响应,但它似乎从服务调用的最新值是没有被绑定到从哪个typeahead正在读取的范围变量。无法绑定来自http调用的最新数据提前

$ 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没有返回一个与Angular的摘要循环(即基于$ 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'正在为你做这件事,而这是解决您的问题。 –

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; 
    }); 
} 
相关问题