ng-if или ng-show останавливает передачу массива в ng-repeat
У меня есть угловая адресная книга. Он содержит список имен и названий на одной стороне и полную биографию на другой. Одной из особенностей био является то, что вы можете сделать кого-то основным контактом. Установка этого флажка выделяет его в списке. Я делаю это, обновляя объект контакта с помощью логического значения, а затем используя сначала ng-if, но теперь я пытаюсь использовать ng-show. Это работает за исключением того, что, если я попытаюсь добавить новый контакт, он будет добавлен в массив контактов, но не появится в списке. Это связано с тем, что я использую ng-if / ng-show. Я попытался добавить $apply() в микс, но он не работал правильно. Мне интересно, сталкивался ли кто-нибудь с этим или у него есть лучшее решение.
Это ретранслятор:
<div class="contactsDetails">
<div class="col-md-3 col-md-offset-2 contactList">
<table class="table table-striped">
<tr>
<th>Name</th>
<th>Title</th>
</tr>
<tr ng-repeat="contact in contacts | orderBy: 'name' | filter: query" ng-click="viewContact(contact)">
<td ng-show="contact.mainContact === true" style="font-weight: bold; background: aliceblue">{{contact.name}}</td>
<td ng-show="contact.mainContact === true" style="font-weight: bold; background: aliceblue">{{contact.title}}</td>
<td ng-show="contact.mainContact === false">{{contact.name}}</td>
<td ng-show="contact.mainContact === false">{{contact.title}}</td>
</tr>
</table>
</div>
Это образец контактного объекта:
{
name: "John Doe",
title: "Lawyer",
company: "Corona",
email: "john.doe@corona.com",
phone: "123-456-7890",
address: "1234 Market Street, Anytown, MA, 02143",
mainContact: false
}
Я пытался сократить количество кода, который я здесь показываю, но если кто-то захочет, чтобы я публиковал больше или действительно создал код, я могу это сделать.
1 ответ
Все хвалят Е. Абракову. Ng-Class - лучшее решение. Благодарю.