Angular 1.3 et plus
Dans la version 1.3, Angular a pris en charge cette fonctionnalité en utilisant la syntaxe suivante.
<div>{{::message}}</div>
Comme mentionné dans cette réponse .
Angular 1.2 et inférieur
C'est très simple et ne nécessite pas de plugin. Regardez ça.
Cette minuscule directive accomplira ce que vous essayez d'atteindre.
app.directive('bindOnce', function() {
return {
scope: true,
link: function( $scope ) {
setTimeout(function() {
$scope.$destroy();
}, 0);
}
}
});
Vous pouvez lier une fois comme ceci
<div bind-once>I bind once - {{message}}</div>
Vous pouvez lier comme d'habitude
<div ng-bind="message" bind-once></div>
Démonstration : http://jsfiddle.net/fffnb/
Certains d'entre vous utilisent peut-être angular batarang, et comme mentionné dans les commentaires, si vous utilisez cette directive, l'élément s'affiche comme binding 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, alors essayez ceci, cela devrait fonctionner. (non testé) . Faites-moi savoir dans les commentaires si cela a fonctionné pour vous.
app.directive('bindOnce', function() {
return {
scope: true,
link: function( $scope, $element ) {
setTimeout(function() {
$scope.$destroy();
$element.removeClass('ng-binding ng-scope');
}, 0);
}
}
});
@x0b : Si vous souffrez de TOC et que vous voulez supprimer les vides class
l'attribut fait ceci
!$element.attr('class') && $element.removeAttr('class')