65

isDefault 値を持つ storeLocations オブジェクトを返すモデルがあります。isDefault が true を返す場合、グループ内のそのラジオ ボタンをオンに設定したくありません。

$each(data, function(index,value) を実行して、返された各オブジェクトを反復処理する必要があるかどうか、または角度構造を使用してこれを行う簡単な方法があるかどうかはわかりません。

物体:

storeLocations = [
 {
  ... more values,
  isDefault: true
 }
]

マークアップ:

    <tr ng-repeat="location in merchant.storeLocations">
        <td>{{location.name}}</td>
        <td>{{location.address.address1}}</td>
        <td>{{location.address.address2}}</td>
        <td>{{location.address.city}}</td>
        <td>{{location.address.stateProvince}}</td>
        <td>{{location.address.postalCode}}</td>
        <td>{{location.address.country}}</td>
        <td>{{location.website}}</td>
        <td>{{location.zone}}</td>
        <td><input type="radio" ng-model="location.isDefault" value="{{location.isDefault}}" name="isDefault_group"></td>
4

6 に答える 6

75

ng-valueの代わりに使用しvalueます。

ng-value="true"

のバージョンng-checkedは、コードが重複しているため悪化しています。

于 2013-11-14T13:26:17.117 に答える
27

より強力でisDefault、すべてのモデルに が含まれないようにする方法の 1 つは、 ng-attributesng-modelng-valueを使用することng-checkedです。

ng-model : 値をモデルにバインドします。

ng-valueng-model :バインディングに渡す値。

ng-checked : 評価される値または式。ラジオボタンとチェックボックスに便利です。

使用例: 次の例では、モデルと、サイトがサポートする言語のリストがあります。サポートされているさまざまな言語を表示し、選択した言語でモデルを更新するには、この方法で実行できます。

<!-- Radio -->
<div ng-repeat="language in languages">

  <div>
    <label>

      <input ng-model="site.lang"
             ng-value="language"
             ng-checked="(site.lang == language)"
             name="localizationOptions"
             type="radio">

      <span> {{language}} </span>

    </label>
  </div>

</div>
<!-- end of Radio -->

私たちのモデルは、評価中の式が真であるときはいつでも値site.langを取得します。モデルにはすでに変更があるため、これによりサーバーと簡単に同期できます。language(site.lang == language)

于 2015-11-24T09:30:58.127 に答える
22

組み込みの angular 属性を使用するだけで終わったng-checked="model"

于 2013-03-15T20:22:53.567 に答える
2

質問のコメントでいくらか議論されているように、これはあなたがそれを行うことができる1つの方法です:

  • 最初にデータを取得するときは、すべての場所をループして、storeDefault を現在の既定のストアに設定します。
  • マークアップで:<input ... ng-model="$parent.storeDefault" value="{{location.id}}">
  • データを保存する前に、すべての Merchant.storeLocations をループし、isDefault を false に設定します。ただし、location.id が storeDefault と等しいストアを除きます。

上記は、各場所に一意の値を保持するフィールド (id など) があることを前提としています。

ng-repeat が子スコープを作成し、親スコープで storeDefault パラメータを操作したいため、 $parent.storeDefault が使用されることに注意してください。

フィドル

于 2013-01-26T01:24:32.560 に答える
1

このようなことをするだけで、<input type="radio" ng-disabled="loading" name="dateRange" ng-model="filter.DateRange" value="1" ng-checked="(filter.DateRange == 1)"/>

于 2019-06-21T02:27:02.443 に答える