AngularJS正常绑定与一次绑定与重新渲染元素

时间:2016-08-11 10:54:22

标签: angularjs

在我的角度项目中,我更喜欢使用单向绑定来实现这样的性能

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

但是当视图项发生更改时,必须重新呈现DOM才能显示新值。所以我使用ng-if。所以它看起来像

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

为了重新渲染DOM,我使用了一个函数

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

此渲染方法有效,但每个项目更新都有渲染成本。另一种方法是在没有ng-if的情况下使用双向绑定,但这种绑定会创建观察者并导致性能问题。

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

我不能在两种方法之间做出决定。哪一个对最好的表现有好处?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

实际上,如果你的模型不会改变,请使用单向数据绑定,否则更喜欢使用双向数据绑定来保持一致性和简单性。由于ngIf指令也使用$ scope.watch,因此性能下降