AngularJS 1.5 - Comment Définir les Deux sens Liaisons Composant
Directives Angulaire 1.X sont prévus pour les deux sens de la liaison par défaut. Les composants ont isolé des étendues par défaut. J'ai un affichage qui ressemble à:
<div class="my-view">
{{controllerVariable}}
</div>
Si j'ai ci-dessus défini comme une directive, la controllerVariable
charge correctement dans la situation suivante:
<div ng-controller="myController">
<my-view></my-view>
</div>
Mais si je l'ai mis en place comme un composant à l'aide de l'suivantes:
myApp.component('myView', {
templateUrl: '/path/to/view',
bindings: '='
});
alors la valeur de la variable n'est pas affichée. J'ai essayé d'ajouter $ctrl
de la variable:
<div class="my-view">
{{$ctrl.controllerVariable}}
</div>
mais cela ne veut pas afficher la valeur.
Ce qui me manque ici?
Deux façon de liaisons ne sont pas recommandés dans les Composants. Les composants ont été conçus pour être compact, ré-utilisable élément qui est totalement autonome en ce sens qu'elle n'a pas de dépendance sur les environs HTML/JavaScript, et ne provoque pas de changements dans l'environnement HTML/JavaScript. Composants communiquer avec l'application d'autres éléments, mais ils ne devraient pas être en mesure de modifier ou d'être modifiés par d'autres éléments.
OriginalL'auteur Lloyd Banks | 2016-11-11
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour passer la valeur de la directive dans le composant:
et le composant:
ensuite, vous serez en mesure d'accéder au composant comme dans l'exemple
Il existe d'autres façons de le faire, comme l'utilisation d'un service pour gérer l'information ou de l'aide d'exiger que ce qui, permettrait de donner votre composant l'accès au contrôleur de la directive. Vous pouvez trouver la méthode ci-dessus et d'autres ici: https://docs.angularjs.org/guide/component.
undefined
dans la console avec cepassedVar
dans ma vue doit êtrepassed-var
Oui merci pour le suivi que vous souhaitez lier la touche ctrl.passedVar de manière appropriée en fonction de comment vous vous défini votre contrôleur (vous aurez juste besoin de retirer la touche ctrl. et l'utilisation passedVar)
OriginalL'auteur Gordnfreeman
J'avais explicitement état de la variable que je voulais lier:
Aussi, depuis
controllerVariable
est une chaîne de caractères, j'ai dû utiliser la@
signe de liaison.OriginalL'auteur Lloyd Banks