2016-05-04 16 views
1

ドロップダウンからデータを選択する必要があるAngularJSアプリケーションに問題があります。 問題は、最初のドロップダウン(ブランド)が変更されたとき、データは、グローバルではなく2番目のドロップダウン(モデル)にのみ注入されなければならないという点です。ドロップダウンツリー構造のAngularJS ng-model定義

JsFiddle

私はこの問題は、NG-モデルであることを、知っている - 私はNG-モデルを定義する必要がありますする方法?

<div ng-controller="MyCtrl"> 
<div ng-if="car" ng-repeat="car in cars"> 
    <br><label>{{car.name}}</label><br> 
    <label>brand</label> 
    <select ng-model="car.brand" ng-options="car as car.name for car in brands" ng-change="loadBrands($index)"> 
    <option value="">select</option> 
    </select> 
    <label>model</label> 
    <select ng-model="car.brand.model" ng-options="car as car.model for car in models"> 
    <option value="">select</option> 
    </select> 
<button ng-click="show($index)">show</button> 

感謝。

JSFiddle with the following modifications

+1

あなたの関数 'loadBrands()'は、 '$ scope.model'プロパティの変更をぎこちなく引き起こします。なぜモデルをbrand.modelsとしてブランドに付けるのですか? – Adwaenyth

答えて

1

代わりに、すべての車のためのグローバル$scope.modelsを変更するので、あなただけの選択の車のモデルを更新する必要があり

$scope.loadBrands = function(index) { 
    if ($scope.cars[index].brand.name == 'audi') { 
     $scope.cars[index].models = $scope.audi; 
    } else { 
     $scope.cars[index].models = $scope.bmw; 
    } 
    } 

とモデルのための選択は、次のように変更します。

<select ng-model="brand.model" ng-options="car as car.model for car in cars[$index].models"> 
    <option value="">select</option> 
</select> 
+0

ありがとうございますが、それはcorectlyで動作していません。あなたが選択した場合:車1:アウディ、アウディAと車2:アウディ、アウディB、そして車1のモデルもまた変化します。 – user3700786

+0

解決済み: ' ' – user3700786

+0

それでした!私はあなたが問題を解決することができてうれしいです! ;) –

関連する問題