2017-06-06 11 views
0

ng-repeat内のselectに問題があります。問題は、ng-repeat内で作成するすべての選択が無効になっています。オプション。角度 - 内部ng-repeatを選択

選択はng-repeatで生成され、選択数とすべての値はJSONの です。

私は問題が選択されたngモデルかもしれないと思う、私は動的にngモデルを割り当てる必要があるが、私は方法を知らない。

これはコード(私はJSONを取得するサービスが含まれていませんが、それは確かに動作します)

JSON

[ 
    { 
     "Id":1, 
     "Name":"Tipo Fuga", 
     "Values":[ 
     { 
      "Name":"Tipo Fuga", 
      "Value":"Week End in Famiglia", 
      "Id":10555 
     }, 
     { 
      "Name":"Tipo Fuga", 
      "Value":"Fuga romantica", 
      "Id":10560 
     } 
     ] 
    }, 
    { 
     "Id":2, 
     "Name":"Localita", 
     "Values":[ 
     { 
      "Name":"Localita", 
      "Value":"Al mare", 
      "Id":111 
     }, 
     { 
      "Name":"Localita", 
      "Value":"In montagna", 
      "Id":112 
     } 
     ] 
    }, 
    { 
     "Id":3, 
     "Name":"Num Notti", 
     "Values":[ 
     { 
      "Name":"Num Notti", 
      "Value":"1", 
      "Id":11076 
     }, 
     { 
      "Name":"Num Notti", 
      "Value":"2", 
      "Id":11077 
     } 
     ] 
    }, 
    { 
     "Id":4, 
     "Name":"Tipo Soggiorno", 
     "Values":[ 
     { 
      "Name":"Tipo Soggiorno", 
      "Value":"1 stella", 
      "Id":1100 
     }, 
     { 
      "Name":"Tipo Soggiorno", 
      "Value":"2 stelle", 
      "Id":1101 
     } 
     ] 
    } 
] 

HTML

<div ng-controller="ricercaAttivita"> 
    <div ng-repeat="masterAttribute in masterAttributes"> 
     <select ng-model="selected-attr" ng-options="attr.Id as attr.Value for attr in masterAttribute.Values"> 
     </select> 
    </div> 
</div> 

CONTROLLER

です
tantoSvagoApp.controller("ricercaAttivita", function ($scope, $http, serviceRicercaAttivita) { 

    var parametersMaster = {"Id": master}; 
    serviceRicercaAttivita.getMasterAttributes(parametersMaster, 
    successCallBackMasterAttributes); 

    function successCallBackMasterAttributes(result) { 
      $scope.masterAttributes = result; 
    } 
}); 

EDIT

私は私はdivの内側に静的オプションで選択を作成し、もちろん、それは正常に動作し、単純なことを実行しようとしました:

<div> 
    <select> 
    <option value="">TUTTE</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    <option value="5">5</option> 
    </select> 
</div> 

私は選択でNGリピートディレクティブを置くとしません私はドロップダウンを開いてオプションを選択することはできません。

<div ng-repeat="masterAttribute in masterAttributes"> 
    <select> 
    <option value="">TUTTE</option> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    <option value="5">5</option> 
    </select> 
</div> 
+0

は配列としてあなたのNG-モデルを宣言し、選択した-ATTR [$インデックス]にごNG-モデルを変更し、参照してください? – Vivz

答えて

0

問題文はあいまいです。

ng-modelは、selectから選択されたidを保持するJSONの新しいプロパティにすることができます。それが動作しているか

var app = angular.module("MyApp", []); 
 
app.controller("ricercaAttivita", function($scope) { 
 
    $scope.masterAttributes = [{ 
 
     "Id": 1, 
 
     "Name": "Tipo Fuga", 
 
     "Values": [{ 
 
      "Name": "Tipo Fuga", 
 
      "Value": "Week End in Famiglia", 
 
      "Id": 10555 
 
     }, 
 
     { 
 
      "Name": "Tipo Fuga", 
 
      "Value": "Fuga romantica", 
 
      "Id": 10560 
 
     } 
 
     ] 
 
    }, 
 
    { 
 
     "Id": 2, 
 
     "Name": "Localita", 
 
     "Values": [{ 
 
      "Name": "Localita", 
 
      "Value": "Al mare", 
 
      "Id": 111 
 
     }, 
 
     { 
 
      "Name": "Localita", 
 
      "Value": "In montagna", 
 
      "Id": 112 
 
     } 
 
     ] 
 
    }, 
 
    { 
 
     "Id": 3, 
 
     "Name": "Num Notti", 
 
     "Values": [{ 
 
      "Name": "Num Notti", 
 
      "Value": "1", 
 
      "Id": 11076 
 
     }, 
 
     { 
 
      "Name": "Num Notti", 
 
      "Value": "2", 
 
      "Id": 11077 
 
     } 
 
     ] 
 
    }, 
 
    { 
 
     "Id": 4, 
 
     "Name": "Tipo Soggiorno", 
 
     "Values": [{ 
 
      "Name": "Tipo Soggiorno", 
 
      "Value": "1 stella", 
 
      "Id": 1100 
 
     }, 
 
     { 
 
      "Name": "Tipo Soggiorno", 
 
      "Value": "2 stelle", 
 
      "Id": 1101 
 
     } 
 
     ] 
 
    } 
 
    ]; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 

 
<body ng-app="MyApp" ng-controller="ricercaAttivita"> 
 
    <div ng-repeat="masterAttribute in masterAttributes"> 
 
    <select ng-model="masterAttribute.Selected" ng-options="attr.Id as attr.Value for attr in masterAttribute.Values"> 
 
     </select> 
 
    </div> 
 
    <pre>{{masterAttributes | json}}</pre> 
 

 
</body>

+0

ng-model = "masterAttribute.Id"を設定しようとしましたが、選択が無効になっていて、理由を理解できません – user8060797

+0

'ng-model =" masterAttribute.Id " 。選択が無効であるということは何を意味しますか? – Sajal

+0

私はドロップダウンが開かないことを意味しますが、ソースコードを見ると、すべてのオプションが表示されます – user8060797