0

手術を編集するための AngularJS ページがありますが、現在の値を表示するための <select> を取得できません。フォームの他のすべてのフィールドには現在の値が表示されるため、何が間違っているのかわかりません。

私は ngResource で設定されたファクトリを持っています。これは私のコントローラーにあります。

// Supporting Data
SurgeryData.get({'accessToken':$rootScope.accessToken})
    .$promise.then(function(response){
        $scope.surgeryData = response.surgeryData;
    });

// Surgery Data
SurgeryServices.get({'surgeryId':$stateParams.surgeryId,'accessToken':$rootScope.accessToken})
    .$promise.then(function(response){
        $scope.surgeryDetails = response;

        $scope.formData.surgeryId = $scope.surgeryDetails.surgery.id;
        ...
        $scope.formData.surgeryStatus = $scope.surgeryDetails.surgery_status;
        ...

        $log.log( angular.toJson( $scope.formData.surgeryStatus ) );
        $log.log( angular.toJson( $scope.surgeryData.surgery_status ) );
    });

これは手術状況の HTML です。

<select class="form-control" ng-model="formData.surgeryStatus" ng-options="status.name for status in surgeryData.surgery_status"></select>

これは、2 つの $logs からコンソールに表示されるものです

$scope.formData.surgeryStatus

{"id":16,"name":"Ready For Pick-Up"}

$scope.surgeryData.surgery_status

[{"id":13,"name":"Inventory Not On Site"},{"id":14,"name":"Inventory On Site"},{"id":16,"name":"Ready For Pick-Up"},{"id":15,"name":"Sterilized For Surgery"}]

フォーム内の <select> にはすべてのオプションがありますが、(この例では) [受け取りの準備ができました] が選択されておらず、空の ? があります。選択に追加されたオプション

<select class="form-control ng-pristine ng-valid" ng-model="formData.surgeryStatus" ng-options="status.name for status in surgeryData.surgery_status">
    <option value="?"></option>
    <option value="0">Inventory Not On Site</option>
    <option value="1">Inventory On Site</option>
    <option value="2">Ready For Pick-Up</option>
    <option value="3">Sterilized For Surgery</option>
</select>
4

1 に答える 1

2

ng-initが進むべき道です。

意見:

<select class="form-control ng-pristine ng-valid" ng-init="formData.surgeryStatus = selected" ng-model="formData.surgeryStatus" ng-options="status.name for status in surgeryData.surgery_status track by status.id">
   <option value="?"></option>
   <option value="0">Inventory Not On Site</option>
   <option value="1">Inventory On Site</option>
   <option value="2">Ready For Pick-Up</option>
   <option value="3">Sterilized For Surgery</option>
</select>

ビューモデル:

$scope.selected = $scope.surgeryDetails.surgery_id;

ng-init は、オプションから一致する値を見つけて、ロード時に選択します。ng-model を、選択したい値に等しく設定してください。この場合、ID のように見えますか?

于 2014-08-05T22:04:45.427 に答える