Вопрос
Я только что узнал, что вы можете иметь необязательное "обратное" или обратное связывание через:
scope: { parentScopeFunc: '&?' }
Я пытаюсь понять, есть ли способ сделать что-то подобное с привязкой в 2-х направлениях.
scope: { optional2WayBoundProp: '=?' }
Я попробовал с параметрами link element и attrs, но затем я потерял привязку с двумя каналами назад к родительскому. Этот метод допускает только обновления от родителя к ребенку. Тогда я мог бы просто использовать механизм видимости @.
изменить
Я нашел этот вопрос Angular JS директива, измените привязку данных в 2-х направлениях в функции ссылок, чтобы ответить на главный вопрос относительно =?. Однако он не решает "необязательное" значение без привязки, например true или false.
цели
Вот что я пытаюсь выполнить:
-
написать директиву панели, которая передает содержимое и сворачивается в стороне от области заголовка:
<my-panel> <transcluded-header-content/> <button ng-click="toggleCollapse()"/> <transcluded-body-content ng-if="isExpanded"/> </my-panel> -
В некоторых случаях я хочу кэшировать свернутое состояние экземпляра панели в родительской области (следовательно, двухсторонняя привязка, где контроллер представления может определить, как кэшировать эту информацию):
<my-panel is-expanded="parentScopeProp"> - в других случаях я могу просто объявить его без привязки к свойству родительской области видимости ИЛИ я могу просто не объявлять его вообще, и в этом случае он предполагает его расширение.
<my-panel is-expanded="true/false">
Я понимаю, что с помощью назначения = выражения, подобные undefined, true и false, не могут быть оценены.