AngularJS : Why ng-bind is better than {{}} in angular?

前端 未结 12 848
灰色年华
灰色年华 2020-11-22 07:19

I was in one of the angular presentation and one of the person in the meeting mentioned ng-bind is better than {{}} binding.

One of the re

12条回答
  •  暖寄归人
    2020-11-22 07:24

    Visibility:

    While your angularjs is bootstrapping, the user might see your placed brackets in the html. This can be handled with ng-cloak. But for me this is a workaround, that I don't need to use, if I use ng-bind.


    Performance:

    The {{}} is much slower.

    This ng-bind is a directive and will place a watcher on the passed variable. So the ng-bind will only apply, when the passed value does actually change.

    The brackets on the other hand will be dirty checked and refreshed in every $digest, even if it's not necessary.


    I am currently building a big single page app (~500 bindings per view). Changing from {{}} to strict ng-bind did save us about 20% in every scope.$digest.


    Suggestion:

    If you use a translation module such as angular-translate, always prefer directives before brackets annotation.

    {{'WELCOME'|translate}} =>

    If you need a filter function, better go for a directive, that actually just uses your custom filter. Documentation for $filter service


    UPDATE 28.11.2014 (but maybe off the topic):

    In Angular 1.3x the bindonce functionality was introduced. Therefore you can bind the value of an expression/attribute once (will be bound when != 'undefined').

    This is useful when you don't expect your binding to change.

    Usage: Place :: before your binding:

    • {{item}}

    Example:

    ng-repeat to output some data in the table, with multiple bindings per row. Translation-bindings, filter outputs, which get executed in every scope digest.

提交回复
热议问题