2015-06-26 5 views
1

http://jsfiddle.net/yhv9bjrx/2/Добавление нового поля ввода в нг-повторе

В скрипке выше, я пытаюсь, чтобы позволить пользователям добавлять новое открытое время, когда они попали в новой кнопку элемента. Проблема, с которой я сталкиваюсь, заключается в том, что при нажатии кнопки она обновляет оба события в ng-repeat, а не текущее событие.

<ul> 
     <li ng-repeat="event in orgEvents"> 
      <h3>Event ID: {{event.CampaignEventID}}</h3> 
      <h2>Event Name: {{event.Name}}</h2>   
      <ul> 
      <li ng-repeat="time in orgEventTimes"> 
       <div ng-if="time.CampaignEventID == 1"> 
        Event ID: <input type="text" ng-model="time.CampaignEventID"> 
        Open: <input type="text" ng-model="time.OpenTime"> 
       </div> 
      </li> 
      <button ng-click="add(item)">New Item</button> 

      </ul> 
      <hr/> 
     </li> 
    </ul> 

Кроме того, для какой-то причины нг-если заявление не работает, и это показывает каждое событие в массиве $ scope.orgEventTimes, а не только те, принадлежат к этому событию.

+0

вы обязаны ли использовать ту же структуру данных событий и it't время т.е. события в отдельном списке и их раз в отдельном списке, или вы можете изменить структуру данных? –

+0

@ShashankAgrawal, к сожалению, я привязан к той же структуре данных, что и они находятся в отдельных списках – Dave

ответ

1

https://jsfiddle.net/3aqwng8o/

Я не знаю, почему ng-if не работает .. Вместо использования ng-if почему бы не использовать filter?

<li ng-repeat="time in orgEventTimes|filter: {CampaignEventID:event.CampaignEventID}">

Ваша кнопка для добавления элемента просто толкая пустой объект в массив orgEventTimes. Попросите объект, который включает в себя CampaignEventID события для этого экземпляра цикла ng-repeat.

$scope.add = function (item) { 
      $scope.orgEventTimes.push(item); 
     }; 

<button ng-click="add({CampaignEventID: event.CampaignEventID})">New Item</button>

+0

Блестяще, спасибо вам большое! – Dave

+0

Я бы не выставил CampaignEventID в качестве ввода, поскольку вход исчезнет, ​​если вы его удалите, но все равно останетесь в массиве с пустым идентификатором, но, по-видимому, это было только для целей тестирования/разработки. – miyamoto

Смежные вопросы