0

次のように作成された選択リストがあります。

    <div class="actionList" ng-repeat="selectedAction in outputDevice.selectedActions">
      <select class="outputAction" ng-model="selectedAction.value" ng-options="action as action.name for action in outputDevice.userDevice.baseDevice.outputs">
        <option value="">
          Select Action
        </option>
      </select>
    </div>

作成/編集ページに含まれています。ページが編集モードのときに、サーバーから取得した値に基づいて、リスト内のどの項目を選択するかを選択したいと考えています。現在、選択リストには正しいオプションが入力されますが、選択リストを正しい値で開始することはできません。ページに値を入力するコードは次のとおりです。

             for(var i =1; i<result.length; i++){
                var appyDevice = result[i];
                var userDevice = appyDevice.device;
                var selectedActions;

                if(appyDevice.outputs){
                    selectedActions = appyDevice.outputs;
                    for(var j =0; j<selectedActions.length; j++){
                        selectedActions[j].value = {
                            name: selectedActions[j].name,
                            id: selectedActions[j].id
                        };
                    }
                    $ctrlScope.outputDevices.push({
                        userDevice: userDevice, 
                        selectedActions: selectedActions
                    });
                }
            }
            $ctrlScope.$apply();

選択リストがバインドされているを設定selectedActions[j].valueしましたが、更新されません。これが機能しない理由はありますか?またはこれを行う他の方法は?

編集: 結果の JSON のサンプルを次に示します (冗長な情報などは無視してください。まだシリアル化に取り組んでいます)。

[
   {
      "user":{
         "id":1,
         "username":"asdf",
         "email":"asdf"
      },
      "id":1,
      "name":"SuperAppy",
      "description":"some super duper descriptioon "
   },
   {
      "appy":{
         "user":{
            "id":1,
            "username":"asdf",
            "email":"asdf"
         },
         "id":1,
         "name":"SuperAppy",
         "description":"some super duper descriptioon "
      },
      "inputs":[
         {
            "id":1,
            "name":"Shake"
         }
      ],
      "outputs":[
         {
            "id":1,
            "name":"TurnOn"
         }
      ],
      "device":{
         "user":{
            "id":1,
            "username":"asdf",
            "email":"asdfm995@gmail.com"
         },
         "baseDevice":{
            "inputs":[
               {
                  "id":1,
                  "name":"Shake"
               },
               {
                  "id":2,
                  "name":"Slide"
               }
            ],
            "outputs":[
               {
                  "id":1,
                  "name":"TurnOn"
               },
               {
                  "id":2,
                  "name":"TurnOf"
               }
            ],
            "id":1,
            "name":"iPhone5",
            "osVersion":5.0,
            "appVersion":0.0
         },
         "id":1
      },
      "id":1
   },
   {
      "appy":{
         "user":{
            "id":1,
            "username":"asdf",
            "email":"asdfm995@gmail.com"
         },
         "id":1,
         "name":"SuperAppy",
         "description":"some super duper descriptioon "
      },
      "inputs":[
         {
            "id":1,
            "name":"Shake"
         },
         {
            "id":2,
            "name":"Slide"
         }
      ],
      "outputs":[
         {
            "id":2,
            "name":"TurnOf"
         }
      ],
      "device":{
         "user":{
            "id":1,
            "username":"asdf",
            "email":"asdfm995@gmail.com"
         },
         "baseDevice":{
            "inputs":[
               {
                  "id":1,
                  "name":"Shake"
               },
               {
                  "id":2,
                  "name":"Slide"
               }
            ],
            "outputs":[
               {
                  "id":1,
                  "name":"TurnOn"
               },
               {
                  "id":2,
                  "name":"TurnOf"
               }
            ],
            "id":3,
            "name":"GalaxyS3",
            "osVersion":5.0,
            "appVersion":0.0
         },
         "id":3
      },
      "id":2
   }
]

編集2:ng-initコメントにリンクされている可能性のある重複に従って、無駄 に追加しようとしました:

<select class="inputAction" ng-model="selectedAction.value" ng-options="action as action.name for action in inputDevice.userDevice.baseDevice.inputs" ng-init="selectedAction.value=selectedAction.name">

コードの次の行でこの初期化を効果的に行っているため、これはとにかく無関係だと思います。

                        selectedActions[j].value = {
                            name: selectedActions[j].name,
                            id: selectedActions[j].id
                        };
4

1 に答える 1