3

オブジェクトのハッシュがあり、このハッシュのIDはラジオボタンにバインドされています。ユーザーがこのラジオを選択するとき、このモデルの属性に基づいたオプションを選択タグに入力する必要があります。説明するのが難しいので、私は自分が欲しいものを示すためにCodepenを作成しました:http: //codepen.io/rizidoro/pen/BeJjf

前もって感謝します!

4

3 に答える 3

3

これは、単一のSELECT要素に動的にバインドするcodepenデモであり、選択の変更時にng-modelバインディングが機能します。

HTML:

<div ng-controller="TestCtrl">
  <ul>
    <li ng-repeat="attr in data">
      <input type="radio" name='data-attr' value='{{attr.id}}' ng-model="selected.id" />{{attr.name}}
    </li>
  </ul>

  <select ng-model="selected.value" ng-options="item.name for item in selectedAttr.values "></select>
</div>

JS:

function TestCtrl($scope) {
  $scope.selected = {};

  $scope.data =  [
    {"id":"113000",
      "name":"Size",
      "values":
          [{"id":"92029","name":"Size A"},
           {"id":"92030","name":"Size B"}]
    },
    {"id":"113002",
      "name":"Color",
      "values":
          [{"id":"94029","name":"Blue"},
           {"id":"94030","name":"Black"}]
    }
  ];

  $scope.$watch('selected.id', function(id){
    delete $scope.selected.value;
    angular.forEach($scope.data, function(attr){
      if(attr.id === id){
        $scope.selectedAttr = attr;
      }
    });
  });
}
于 2013-03-01T07:31:00.197 に答える
2

私はあなたの問題を解決するかもしれないフィドルを作成しました。http://jsfiddle.net/qY2Zz/

  1. データをサービスに分離しました。

    animateAppModule.service('data', function(){...})

  2. 選択ボックスにモデルを割り当てました。

    ng-model="$scope.selectedOption"

于 2013-03-01T02:08:38.860 に答える
0

http://jsfiddle.net/wagedomain/afuz5/

HTMLを少し書き直しました。divまたはspanで十分な場合はul/liタグを使用しません。簡単になります。

基本的に、ng-repeat内で、これを行うことができます。

<div ng-repeat="attr in data">
      <input type='radio' name='data-attr' value='{{attr.id}}' />{{attr.name}}   
      <select ng-model="selected" ng-options="item.name for item in attr.values "></select>
</div>

これを機能させるのはng-optionsです。モデルバインドに$scope.selected変数も追加しましたが、フィドルでは何もしていません。必要に応じて使用してください。

于 2013-02-28T19:05:04.247 に答える