0

私の例を見てください http://plnkr.co/edit/21ewxVIaRm4IHyF3TgoD?p=preview

オプション オブジェクトを ng-model として保存する必要があるため、ng-options に使用しますng-options="m as m.name for m in list"

ただし、ng-model をオブジェクトとして手動で設定すると、デフォルトでドロップダウン リストの正しいオプションが選択されません。データは正しく保存されますが、この式を使用する場合にのみオプションが事前に選択ng-options="m.name as m.name for m in list"されますが、オプション オブジェクトではなくモデルに文字列が保存されます。

私は何か間違ったことをしていますか?

ゴール:

  • ng-model をデフォルトのオプション オブジェクトに設定し、ドロップダウンで自動的に選択されるようにします。
4

2 に答える 2

1

プランカーを更新しました。

使用しているバージョン (1.0.8) では、ループを使用してオブジェクトを解決する必要があります。

$scope.selected = {
    name:"Something"
  }

  $scope.setSelected = function() {

    angular.forEach($scope.list, function(item) {

      if (item.name == $scope.selected.name) {

        $scope.selected = item;
      }
    })
  }

  $scope.setSelected();

最近のバージョンでは、track by構文が でサポートされていますng-options。したがって、次のように書くことができます。

ng-options="m.name for m in list track by m.name"

これにより、述語に一致するオブジェクトが設定されます。

于 2013-11-04T17:45:53.097 に答える
0

Davin Tryon がすでに述べたように、track by を使用するのが正しい方法ですが、同じ ng-options 文字列で track by と 'as' を使用している人がいますが、これは機能しません。track by を使用すると、「as」を使用する必要性にも対応できるはずです

于 2014-03-31T16:32:04.240 に答える