Я делаю адресную книгу. Помимо базовых контактных данных, у каждого контакта также есть поле roles
, которое само по себе представляет собой множество разных ролей. Они также имеют поле permissions
и поле certifications
.Выполнение одностороннего двустороннего связывания в AngularJS
Дизайн моей адресной книги похож на обычный 2-панельный дизайн; слева - список всех имен. При выборе контакта, детали показать на право:
<div addressbook>
<!-- This is the list of names -->
<div list>
<!-- This is the selected contact -->
<div contact>
В идеале я хотел бы передать список list
используя одностороннюю связывания. Затем выбранный контакт двухстороннее связывание между addressbook
и list
и одностороннего связывания contact
:
<div addressbook>
<!-- This is the list of names -->
<div list="{{ list }}" selected-contact="contact">
<!-- This is the selected contact -->
<div contact="{{ contact }}">
Я боюсь, что приложение будет работать медленно, если я прохожу list
как один-путь связывания, так как {{list}}
становится очень длинная строка, которую нужно разобрать JSON позже. Я чувствую, что двусторонняя привязка будет быстрее!
Это правда? Могу ли я столкнуться с проблемами производительности, если я сохраню код так, как есть?
Хорошо, что это имеет смысл. Теперь, если я хочу убедиться, что данные также связаны друг с другом? Поэтому в этом случае я не хочу, чтобы основной «список» изменялся, но, возможно, «list» в дочерней директиве мог измениться. Как вы это сделаете, если вы передадите элементы с помощью '='? – Kousha
в функции ссылки вашей директивы, сделайте копию списка, то есть 'scope.myList = angular.copy (scope.list)'. Затем ваш код должен ссылаться на 'scope.myList', а не на' scope.list'. – user2943490
Ну да, но это не самая лучшая стратегия? Кажется, это скорее хак, чем решение. – Kousha