Angular 1.3+
En 1.3, Angular lo ha admitido utilizando la siguiente sintaxis.
<div>{{::message}}</div>
Como se menciona en esta respuesta .
Angular 1.2 y menos
Esto es simple y no necesita un complemento. Mira esto.
Esta pequeña directiva logrará fácilmente lo que está tratando de lograr
app.directive('bindOnce', function() {
return {
scope: true,
link: function( $scope ) {
setTimeout(function() {
$scope.$destroy();
}, 0);
}
}
});
Puedes unir una vez así
<div bind-once>I bind once - {{message}}</div>
Puedes unir como de costumbre
<div ng-bind="message" bind-once></div>
Demostración: http://jsfiddle.net/fffnb/
Algunos de ustedes pueden estar usando batarang angular, y como se menciona en los comentarios, si usa esta directiva, el elemento todavía se muestra como vinculante cuando no lo es, estoy bastante seguro de que esto tiene algo que ver con las clases que están adjuntas al elemento, por lo que intente esto, debería funcionar (no probado) . Déjame saber en los comentarios si funcionó para ti.
app.directive('bindOnce', function() {
return {
scope: true,
link: function( $scope, $element ) {
setTimeout(function() {
$scope.$destroy();
$element.removeClass('ng-binding ng-scope');
}, 0);
}
}
});
@ x0b : Si tiene TOC y desea eliminar el class
atributo vacío, haga esto
!$element.attr('class') && $element.removeAttr('class')