0

次の問題があります。私のコントローラーには、次の変数があります。

$scope.types = [
    {id: 0, name: $translate.instant("FIRST")},
    {id: 1, name: $translate.instant("SECOND")},
    {id: 2, name: $translate.instant("THIRD")},
    {id: 3, name: $translate.instant("FOURTH")}
];
$scope.itemtype = {};
$scope.itemtype = $scope.types[0];

私の見解では、これを選択しています

            <select class="form-control" 
                    required
                    ng-model="itemtype"
                    ng-options="item as item.name for item in types track by item.id">
            </select>

モデルで 2 番目のオプションを選択すると、古い値が選択されたままになりますが、エクスプローラーでは 2 番目のオプションが選択済みとして表示されます。

firebug では、この出力を表示しています

        <select class="form-control ng-pristine ng-valid ng-valid-required ng-touched" ng-options="item as item.name for item in types track by item.id" ng-model="itemtype" required="" tabindex="0" aria-required="false" aria-invalid="false">
        <option value="0" label="First">First</option>
        <option value="1" label="Second">Second</option>
        <option value="2" label="Third"> Third </option>
        <option value="3" selected="selected" label="Fourth"> Fourth </option>
        </select>

どうすれば修正できますか?

ありがとう

4

1 に答える 1

0

「select as」と「track by」を一緒に使用しましたが、API ドキュメントには次のように記載されています。

select as と track by を同じ式で使用しないでください。これらは連携するようには設計されていません。

参照:

https://code.angularjs.org/1.3.10/docs/api/ng/directive/select

http://gurustop.net/blog/2014/01/28/common-problems-and-solutions-when-using-select-elements-with-angular-js-ng-options-initial-selection/

于 2015-02-02T08:28:02.183 に答える