как программно установить выбранную ngModel для ngOption в angular js - PullRequest
0 голосов
/ 05 апреля 2020

Я сел на мель на выборке, созданной из массивов объектов. Я много пробовал и читал об этой топике c, но, похоже, никто не охватывал этот аспект.

Свойство объекта - это массив. Из этого массива я должен создать столько выборок, сколько есть индекса в массиве. Мне нужно создать выбор программно, потому что значение не является фиксированным. Пока что все идет хорошо. Но мне нужно выбрать опцию, основанную на индексе массива.

Я прочитал документы, и кажется, что ngModel является обязательным для ngOption. Таким образом, первый камень преткновения состоит в том, чтобы программно создать столько ngModels для каждого выбора.

$scope.players = [
   {
      "id":"8846",
      "title":"TC 2",
      "resourceid":"1",
      "description":"tc 2",
      "interni":[
         {
            "student_id":"48",
            "student_year_id":"3",
            "student_name":"Fres Dany",
            "id_section":"4",
            "section":"tc"
         },
         {
            "student_id":"13",
            "student_year_id":"1",
            "student_name":"Luck skywalker",
            "id_section":"4",
            "section":"tc"
         }
      ],
      "start_event":"2020-03-02T13:00:00.000Z",
      "end_event":"2020-03-02T19:00:00.000Z",
      "event_note":null
   }
];

, поскольку вы можете видеть, что свойство "interni" имеет индекс [0] и 1 count = 2

что я пробовал:

<div ng-repeat="x in interni track by $index">    
    <select ng-options="x.student_id as x.student_name for x in interni  track by $index"
            id=mySelect{{$index}}
            ng-model="selected[x.student_name]">
    </select>

   {{$index}} <-  "i want to make selecet item as index"

   <div class="form-check form-check-inline">
       <input class="form-check-input" type="radio" 
              name="status{{$index}}" id="inlineRadio1"
              value="presente">
       <label class="form-check-label" for="inlineRadio1">presente</label>
   </div>
   <div class="form-check form-check-inline">
       <input class="form-check-input" type="radio"
              name="status{{$index}}" id="inlineRadio2"
              value="assente">
       <label class="form-check-label" for="inlineRadio2">assente</label>
   </div> 

Также в некоторых тестах я пробовал метод вроде trackBy, initIndex, ng-init = "listIndex = $ index" и так далее. на ..

в основном я должен добавить свойство для каждого элемента в массиве и воссоздать новый объект. Но выбор должен быть выбран при загрузке, и для любых людей, отстраненных от выбора, я должен объявить один статус "предустановка" или "отсутствует"

У меня это сделано в javascript, и мне нужно воссоздать в angularjs.

примерно так:

for (var i =0; i < interni.lenght; i++){
    document.getElementById("mySelect"+[i]).selectedIndex = [i];
}

В общем, как я могу выбрать опцию на основе соответствующего индекса в массиве и получить данные в контроллере?

Здесь работает jsbin

Любая помощь широко ценится ... даже от моей головной боли

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...