2016-08-11 2 views
3

In meinem Winkel Projekte, ziehe ich wie diese aberAngularJS Normale Bindung vs One Time Bindung Mit Rerendering Element

<div> 
    <p ng-bind="::vm.user.name"></p> 
    <p ng-bind="::vm.user.email"></p>  
    <!-- other bindings --> 
</div> 

one-way-Bindung für die Leistung zu verwenden, wenn die Ansichtselemente ändert, muss der DOM erneut gerendert werden um neue Werte anzuzeigen. Also benutze ich ng-ob dafür. So sieht es aus wie

<div ng-if="vm.user"> 
    <p ng-bind="::vm.user.name"></p> 
    <p ng-bind="::vm.user.email"></p> 
    <!-- other bindings -->  
</div> 

Und für rerendering das DOM, verwende ich eine Funktion

function updateUser(user){ 
    vm.user = null; 
    $timeout(function(){ 
     vm.user = user; 
    }); 
} 

Diese Rendering-Methode funktioniert, aber es ist eine Rendering-Kosten für jedes Element Updates. Eine andere Möglichkeit ist die Verwendung von Zweiwege-Bindungen ohne ng - wenn diese Art von Bindungen jedoch Beobachter erzeugt und Leistungsprobleme verursacht.

<div> 
    <p ng-bind="vm.user.name"></p> 
    <p ng-bind="vm.user.email"></p>  
    <!-- other bindings --> 
</div> 

Ich kann keine Entscheidung zwischen zwei Ansätzen treffen. Welches ist das Beste für die beste Aufführung? Danke für die Hilfe.

Antwort

0

Eigentlich, wenn Ihr Modell nicht ändern wird, verwenden Sie One-Way-Datenbindung, andernfalls bevorzugen, Zwei-Wege-Datenbindung für Konsistenz und Einfachheit. Da die ngIf-Anweisung auch $ scope.watch verwendet, sinkt auch die Leistung.

+0

Was ist, wenn die Anzahl der inneren ng-Bindungen mehr als 10 beträgt? – scokmen