5

これはすでに行われているに違いありません。Angular がその点でどのように機能するかについて、私は何かが欠けています。

要するに、<select ng-model><option ng-repeat/></select>ページの読み込み時にデフォルト値を与える方法がわかりません。

意見:

<div ng-ctrl="MyCtrl">
  <form ng-submit="submitChoice()">
    <select ng-model='choice'>
      <option ng-repeat='choice in choices' value='{{choice.id}}'>{{choice.id}}</option>
    </select>
  </form>
</div>

方法 1 : ユーザーがビューを更新すると (必要な「選択」を選択)、$scopeMyCtrl で使用されるビューが取得され、それを使用して必要なことを実行できます。

方法 2 : しかし、逆に、(開始時に) コントローラーからの選択肢のデフォルト値をプログラムで設定したい場合、表示される値を変更することはできません。

function MyCtrl ($scope) {
  $scope.submitChoice = function() {return;}; // Way1: OK!
  $scope.choice = choice4;                    // Way2: Doesn't change the view!!
}

ng-repeat の各要素には独自のスコープがあるためだと思います (ng-repeat の代わりにビューでオプションをハードコーディングすると、うまく機能します)。

方法1では用途によって選択された内側のスコープがchoice、よく理解すれば上位のスコープに発光します。しかし、方法2を行う方法がわかりません。

簡単な方法で実行できますか?ディレクティブは必要ですか?

4

1 に答える 1

5

ng-optionsディレクティブと一緒にディレクティブを使用することをお勧めしselectます。select + ngRepeat の使用にはあらゆる種類の制限があり、回避することをお勧めします。でオプションを生成する特定の理由はありますngRepeatか?

より多くのコード (特にデータ モデルの構造) を共有していただければ、より多くの情報を提供できるかもしれません。

于 2013-01-20T14:53:12.177 に答える