Je viens d'apprendre que vous pouvez avoir une liaison optionnelle "inversée" ou de rappel via:
scope: { parentScopeFunc: '&?' }
J'essaie de voir s'il existe un moyen de faire quelque chose de similaire avec la liaison bidirectionnelle.
scope: { optional2WayBoundProp: '=?' }
J'ai essayé avec les paramètres element
& attrs
de la fonction de liaison, mais j'ai ensuite perdu la liaison bidirectionnelle avec le parent. Cette méthode autorise uniquement les mises à jour parent-enfant. Alors je pourrais aussi bien utiliser le mécanisme de portée @
.
J'ai trouvé cette question directive JS angulaire, modifiez une liaison de données à 2 voies dans la fonction de lien afin que cela réponde à la question principale concernant =?
. Cependant, il ne résout pas la valeur non liée "facultative" telle que true
ou false
.
Voici ce que j'essaie d'accomplir:
écrivez une directive de panneau qui transcende le contenu et est pliable en dehors de la zone d'en-tête:<my-panel> <transcluded-header-content/> <button ng-click="toggleCollapse()"/> <transcluded-body-content ng-if="isExpanded"/> </my-panel>
dans certains cas, je souhaite mettre en cache l'état réduit de l'instance de panneau dans une étendue parent (d'où la liaison bidirectionnelle où le contrôleur de la vue peut déterminer comment mettre en cache ces informations):<my-panel is-expanded="parentScopeProp">
<my-panel is-expanded="true/false">
Je comprends qu'en utilisant l'affectation =
, Des expressions comme undefined
, true
& false
ne peuvent pas être évaluées.
'=?'
est une affectation de portée valide à partir de ng 1.2.x ...
... quant à la possibilité d'avoir un moyen d'interpoler une expression à partir d'une liaison bidirectionnelle facultative, qui est toujours à gagner.