2017-06-27 9 views
0

私は1つのselectフィールドと1つの 'input'フィールドを持っています。両方のフィールドでデータベースからデータを取得しています。
選択したオプションは、デフォルトでdb値に基づいてチェックされます。ドロップダウンオプションを変更すると、balanceフィールドに自動入力されます。
私の問題は、balanceドロップダウンを変更するとフィールド値が自動的に入力されることです。しかし、デフォルトでは、バランスフィールドの値は選択されたオプションのために自動的に設定されません。
ここで何が間違っていますか?

HTML:ng-modelを使用したng-initへのバインド値

<form ng-app="myApp" ng-controller="myCtrl" ng-repeat="data in leaveDetails"> 

     <div> 
      <label>Leave Type</label> 
      <select type="text" ng-model="selectedName" ng-init="selectedName=data.LeavetypeId" ng-options="data.id as data.Name for data in leaveTypes" ng-change="leaveBalance(selectedName)"></select> 
     </div> 
     <div> 
      <label>Availabe Leaves</label> 
      <input type="text" ng-init="balanceCount=data.Balance" ng-model="balanceCount"> 
     </div> 

</form> 

スクリプト:

<script> 
    var app=angular 
        .module('myApp', []) 
        .controller('myCtrl', function ($scope, $http) { 

         $scope.init = function() { 
          $scope.loadEditLevDetails(); 
         } 

         $scope.loadEditLevDetails = function (id) { 
          $scope.Id = { leaveRequestId: id }; 
          var requestHeaders = { 
           'content-type': 'application/json' 
          } 
          var httpRequest = { 
           method: 'post', 
           url: "/user/details", 
           headers: requestHeaders, 
           data: $scope.Id 
          } 
          $http(httpRequest).then(function (response) { 
           $scope.leaveDetails = response.data; 

          }) 
         } 
         $scope.leaveBalance = function (selectedvalue) { 

          $scope.leaveTypeId = { leaveTypeId: selectedvalue }; 
          var requestHeaders = { 
           "content-type": 'application/json' 
          } 
          var httpRequest = { 
           method: 'POST', 
           url: '/user/balanceCount', 
           headers: requestHeaders, 
           data: $scope.leaveTypeId 
          } 
          $http(httpRequest).then(function (response) { 
           $scope.noOfValues = response.data; 
           $scope.balanceCount = $scope.noOfValues[0].balance_count; 
          }) 
         } 

        }) 
</script> 

答えて

1

ここではあなたがやろうとしているものを実装するためのサンプルコードです!それが助けてくれることを願って!

<!doctype html> 
 
<html lang="en" data-ng-app="test"> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>Test</title> 
 
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.6/angular.js"></script> 
 
    <script type="text/javascript"> 
 

 
     angular.module('test',[]) 
 
       .controller('Main',function($scope) 
 
       { 
 
        $scope.myModel = {}; 
 
        $scope.options = [{opt:'1'},{opt:'2'},{opt:'3'}]; 
 
       }); 
 
    </script> 
 
</head> 
 
<body ng-controller="Main"> 
 
{{'Select'}} 
 
<select ng-model="myModel.options" ng-options="data.opt for data in options" ng-init="myModel.options=options[0]"></select> 
 
{{myModel.options}} 
 
</body> 
 
</html>

関連する問題