Dans AngularJS, comment puis-je rendre une valeur sans liaison de données bidirectionnelle? On peut vouloir faire cela pour des raisons de performances, ou même pour rendre une valeur à un moment donné.
Les exemples suivants utilisent tous deux la liaison de données:
<div>{{value}}</div>
<div data-ng-bind="value"></div>
Comment effectuer un rendu value
sans aucune liaison de données?
javascript
angularjs
data-binding
Blowsie
la source
la source
ng-model
vous donne une liaison de données bidirectionnelle: modifications du modèle -> afficher les mises à jour, afficher les modifications -> mises à jour du modèle.Réponses:
Angulaire 1.3+
Dans la version 1.3, Angular a pris en charge cela en utilisant la syntaxe suivante.
Comme mentionné dans cette réponse .
Angular 1.2 et moins
C'est simple et ne nécessite pas de plugin. Regarde ça.
Cette petite directive accomplira facilement ce que vous essayez d'accomplir
Vous pouvez lier une fois comme ça
Tu peux lier comme d'habitude
Démo: http://jsfiddle.net/fffnb/
Certains d'entre vous utilisent peut-être le batarang angulaire, et comme mentionné dans les commentaires, si vous utilisez cette directive, l'élément apparaît toujours comme contraignant alors qu'il ne l'est pas, je suis presque sûr que cela a quelque chose à voir avec les classes qui sont attachées à l'élément. essayez ceci, cela devrait fonctionner (non testé) . Faites-moi savoir dans les commentaires si cela a fonctionné pour vous.
@ x0b : Si vous avez un OCD et que vous souhaitez supprimer l'
class
attribut vide, procédez comme suitla source
Il semble qu'Angular 1.3 (à partir de la version bêta 10) ait une liaison unique intégrée:
https://docs.angularjs.org/guide/expression#one-time-binding
la source
Utilisez le module bindonce . Vous devrez inclure le fichier JS et l'ajouter en tant que dépendance à votre module d'application:
Cette bibliothèque vous permet de restituer des éléments qui ne sont liés qu'une seule fois - lors de leur première initialisation. Toute autre mise à jour de ces valeurs sera ignorée. C'est un excellent moyen de réduire le nombre de montres sur la page pour les éléments qui ne changeront pas après leur rendu.
Exemple d'utilisation:
Lorsqu'elle est utilisée de cette manière, la propriété sous
value
sera définie une fois qu'elle sera disponible, mais la montre sera désactivée.la source
$resource
.Comparaison entre les réponses @OverZealous et @Connor:
Avec le traditionnel ngRepeat d'angular: 15s pour 2000 lignes et 420mo de RAM ( Plunker )
Avec ngRepeat et le module de @OverZealous: 7s pour 2000 lignes et 240mo de RAM ( Plunker )
Avec ngRepeat et la directive de @Connor: 8s pour 2000 lignes et 500mo de RAM ( Plunker )
J'ai fait mes tests avec Google Chrome 32.
la source
angular-once
comparé. Merci.angular-once
package (je l'ai publié comme option alternative ici).En alternative, il existe un
angular-once
package:angular-once
a été en fait inspirébindonce
et fournit desonce-*
attributs similaires :la source