Подтвердить что ты не робот

Необязательная двусторонняя привязка для области выделения для директивы Angular

Вопрос

Я только что узнал, что вы можете иметь необязательное "обратное" или обратное связывание через:

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, не могут быть оценены.

4b9b3361

Ответ 1

'=?' - допустимое присвоение области действия по адресу ng 1.2.x...

... как для возможности иметь средство интерполяции выражения из необязательного двустороннего связывания, которое все еще доступно для захватов.