【问题标题】:AngularJS Normal Binding vs One Time Binding With Rerendering ElementAngularJS 普通绑定与使用重新渲染元素的一次性绑定
【发布时间】:2016-08-11 10:54:21
【问题描述】:

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

<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>

我无法在两种方法之间做出决定。哪一个是最好的表现?感谢您的帮助。

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    实际上,如果您的模型不会更改,请使用单向数据绑定,否则更喜欢使用双向数据绑定以保持一致性和简单性。由于 ngIf 指令也使用 $scope.watch 所以它也在降低性能

    【讨论】:

    • 如果内部 ng-bind 的计数超过 10 怎么办?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-23
    • 2013-08-16
    相关资源
    最近更新 更多