Angular 1.3+
W wersji 1.3 Angular obsługiwał to przy użyciu następującej składni.
<div>{{::message}}</div>
Jak wspomniano w tej odpowiedzi .
Kątowy 1.2 i niższy
Jest to proste i nie wymaga wtyczki. Sprawdź to.
Ta niewielka dyrektywa z łatwością osiągnie to, co próbujesz osiągnąć
app.directive('bindOnce', function() {
return {
scope: true,
link: function( $scope ) {
setTimeout(function() {
$scope.$destroy();
}, 0);
}
}
});
Możesz raz związać się w ten sposób
<div bind-once>I bind once - {{message}}</div>
Możesz wiązać jak zwykle
<div ng-bind="message" bind-once></div>
Demo: http://jsfiddle.net/fffnb/
Niektórzy z was mogą używać kątowego batarangu i jak wspomniano w komentarzach, jeśli używasz tej dyrektywy, element nadal wyświetla się jako wiążący, gdy nie jest, jestem prawie pewien, że ma to coś wspólnego z klasami, które są dołączone do elementu, więc spróbuj tego, powinno działać (nie testowane) . Daj mi znać w komentarzach, czy to zadziałało.
app.directive('bindOnce', function() {
return {
scope: true,
link: function( $scope, $element ) {
setTimeout(function() {
$scope.$destroy();
$element.removeClass('ng-binding ng-scope');
}, 0);
}
}
});
@ x0b : Jeśli masz OCD i chcesz usunąć pusty class
atrybut, zrób to
!$element.attr('class') && $element.removeAttr('class')