2017-02-03 16 views
1

私はスタックに似た質問をしています。しかし、違いは、コントローラでのドロップダウンのオプションをハードコーディングしてから、ドロップダウンでデフォルトでモデルの値を表示することです。angleJSを使用して、モデルから値を選択してください

HTML:

<div class="form-group"> 
          <label class="col-md-3 control-label" for="talent.rating">Rating*</label> 
          <div class="col-md-9"> 
           <select ng-model="talent.rating" validator="required" required-error-message="Rating is required" name="talent.rating" ng-options="obj.value as obj.text for obj in array"></select> 
          </div> 
         </div> 

コントローラー:

myApp.controller('editTalentController', ['$scope', '$rootScope', 'talentResolved', 'accountResolved', 'talentServices', '$location', 'ngDialog', '$window', 
    function ($scope, $rootScope, talentResolved, accountResolved, talentServices, $location, ngDialog, $window) { 

     $scope.talent = talentResolved.data; 
      $scope.array = [{ value: '1', text: '1' }, { value: '2', text: '2' }, { value: '3', text: '3' }, { value: '4', text: '4' }, { value: '5', text: '5' }]; 

    }]); 

モデル:

$scope.talent: Object 
createdOn: "2017-02-03T00:58:20.0999066" 
employee : Object 
fromAccount : Object 
id :130 
inDate : "2017-02-01T05:30:00" 
movedOutOfBench : false 
outTill : "2017-05-02T05:30:00" 
rating : 2 
remark : "asd" 
resumePath : "" 

は私が間違って何をしているのですか?修正のためのコードを私に提供してください。

+0

なぜあなたは 'ng-init'式を' ng-options'と同じですか? – Nishant123

+0

私は結果を見るためにそれを試していました。申し訳ありません、それを元に戻すことを忘れました。私は自分のコードでinitを持っていません – Phoenix

+0

この部分を説明してください - > '私はドロップダウンでデフォルトでモデルの値を表示します。多分フィドルやプルーカが素晴らしいかもしれません.... – Nishant123

答えて

1

解決策が見つかりました。

HTML:

<select ng-model="talent.rating" convert-to-number> 
            <option value="1">1</option> 
            <option value="2">2</option> 
            <option value="3">3</option> 
            <option value="4">4</option> 
            <option value="5">5</option> 
           </select> 

コントローラー:

myApp.directive('convertToNumber', function() { 
    return { 
     require: 'ngModel', 
     link: function (scope, element, attrs, ngModel) { 
      ngModel.$parsers.push(function (val) { 
       return val != null ? parseInt(val, 10) : null; 
      }); 
      ngModel.$formatters.push(function (val) { 
       return val != null ? '' + val : null; 
      }); 
     } 
    }; 
}); 

私は好きで、配列に数値として値を与える試みたにもかかわらず:

$scope.array = [{ value: 1, text: '1' }, { value: 2, text: '2' }, { value: 3, text: '3' }, { value: 4, text: '4' }, { value: 5, text: '5' }];, angular was considering it as string. Don't know why. 
When inspecting from console,it was like - https://hastebin.com/ugatisazey.vbs 

ディレクティブは、問題を解決する助けてくれました。

関連する問題