2016-08-05 96 views
1

我正在處理angularJS。做一個自動請求

我有一個輸入連接到服務郵政編碼的服務。 (在我的情況下,所有的郵政編碼有5個數字)

我希望當我把第5個號碼,它使呼叫沒有按下按鈕。

我的服務是這樣的:

angular 
.module('myApp') 
.controller('codPostal', codPostal); 

function codPostal($scope, $http, $rootScope) { 
    $scope.SendCP = function() {   
     var config = { 
      headers : { 
       'Content-Type': 'application/json;charset=utf-8;' 
      } 
     } 
     $http({ 
      method:'GET', 
      url:'https://postal-code.service.com/' + $scope.formData.domicilio.codPostal, 

      headers: { 
       'Content-Type': 'application/json' 
      } 
     }) 
     .success(function (data, status, headers, config) { 
      $rootScope.cpResponse = data; 

     }) 
     .error(function (data, status, header, config) { 
      $scope.CPdetails = "Data: " + data + 
       "<hr />status: " + status + 
       "<hr />headers: " + header + 
       "<hr />config: " + config; 
     }); 
    }; 

}

我用一個 'SendCP' 作爲觸發獲得響應。

+0

只要它是等於添加監聽關鍵了,算個字符,到5,使呼叫服務。 –

回答

2

你可以在任何具有ng模型的輸入上使用ng-change,並且當模型由於用戶事件而更新時(key up),ng-change將觸發,在那裏你可以檢查長度該字符串匹配5,如果是的話,激發你的功能。

angular.module('myApp',[]) 
 
.controller('myCtrl', function($scope){ 
 

 
    $scope.SendCP = function(){ alert('do existing thing here')} 
 
    
 
    $scope.zipCodeHandler = function(zipcode){ 
 
    if(zipcode.length==5) 
 
     $scope.SendCP(); 
 
    } 
 
});
<!DOCTYPE html> 
 
<html ng-app="myApp"> 
 
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.5.8/angular.min.js"></script> 
 

 
<body ng-controller="myCtrl"> 
 

 
    <input ng-model="zipCodeHere" ng-change="zipCodeHandler(zipCodeHere)"/> 
 

 

 
</body> 
 

 
</html>

+0

爲什麼投了票? – shaunhusain

+1

我不知道。你的ng-model綁定到$ scope,你不需要把它作爲參數傳遞。 – gyc

+0

是的,只是取決於你想要的函數的接口,這將更直接地測試。 – shaunhusain