2016-02-19 45 views
1

從數據庫中值。這是我的代碼上的觀點:Angularjs:自動填充文本通過點擊按鈕

input type="text" name="passno" ng-keyup="fetchdata()" class="form-control" ng-model="FormData.passno" 

input name ="firstname" type="text" class="form-control" ng-model="FormData.fname" ng-disabled="isDisabled" 

input name="lastname" type="text" class="form-control" ng-model="FormData.lname" ng-disabled="isDisabled" 

在控制器端:

$scope.FormData = {passno:''}; 
    $scope.fetchdata = function() { 

     $scope.$watch('FormData.passno',function(){ 
     $http({ 
      method: 'POST', 
      url: 'server/company/getPassnoData', 
      data: {passno:$scope.FormData.passno }, 
      headers: {'X-API-KEY': $rootScope.currentUser.key} 

     }) 
      .success(function(data){ 
       $scope.autofill = data; 
       if(data) { 
        SweetAlert.swal({ 
         title: "Warning?", 
         text: "User with this passport number is already registered as "+$scope.autofill.CandData.f_name, 
         type: "warning", 
         showCancelButton: true, 
         confirmButtonColor: "#DD6B55", 
         confirmButtonText: "Auto Fill", 
         cancelButtonText: "Reset", 
         closeOnConfirm: false, 
         closeOnCancel: false 
        }, function (isConfirm) { 
        if (isConfirm) {       

    $scope.FormData.fname= $scope.autofill.CandData.f_name; 
$scope.FormData.lname= $scope.autofill.CandData.l_name; 
}); 

我的問題是甜的警報會生成警報正常。當我點擊自動填充它顯示成功,但文本框值不能顯示,直到我手動點擊特定的文本框,然後將顯示文本框中的所有值,但我想通過單擊自動填充來顯示。基本上我想動態顯示文本框的值。我只接受護照號碼字段的輸入,而不是發送請求,結果來自我必須動態顯示的名字,姓氏字段。

回答

0

如果您更改了非角度組件內的任何內容,它將不會運行$digest,以便對所鏈接的任何位置進行更改。

您需要對非角度組件應用更改。

添加$scope.$apply()

像這樣

$scope.FormData.fname= $scope.autofill.CandData.f_name; 
$scope.FormData.lname= $scope.autofill.CandData.l_name; 
$scope.$apply() 

或類似這樣的

$scope.$apply(function(){ 
    $scope.FormData.fname= $scope.autofill.CandData.f_name; 
    $scope.FormData.lname= $scope.autofill.CandData.l_name; 
})