Angulaire 1.3+
Dans la version 1.3, Angular a pris en charge cela en utilisant la syntaxe suivante.
<div>{{::message}}</div>
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
app.directive('bindOnce', function() {
return {
scope: true,
link: function( $scope ) {
setTimeout(function() {
$scope.$destroy();
}, 0);
}
}
});
Vous pouvez lier une fois comme ça
<div bind-once>I bind once - {{message}}</div>
Tu peux lier comme d'habitude
<div ng-bind="message" bind-once></div>
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.
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 avez un OCD et que vous souhaitez supprimer l' class
attribut vide, procédez comme suit
!$element.attr('class') && $element.removeAttr('class')