angularJS的双和单个花括号之间的区别?
我对这个angular度世界是陌生的,我对使用双花括号{{}}和单花括号{}或有时没有使用花括号来包括expression式中的expression式有点困惑
ng-class={expression}
-
normal data binding like{{obj.key}}
-
ng-hide='mydata==="red"'
{{}} – 双花括号:
{{}}
是有angular度的expression式,当你希望把东西写入HTML时,它是相当方便的:
<div> {{planet.name == "Earth" ? "Yeah! We 're home!" : "Eh! Where 're we?"}} </div> <!-- with some directives like `ngSrc` --> <img ng-src="http://www.example.com/gallery/{{hash}}"/> <!-- set the title attribute --> <div ng-attr-title="{{celebrity.name}}">... <!-- set a custom attribute for your custom directive --> <div custom-directive custom-attr="{{pizza.size}}"></div>
不要在已经是expression的地方使用这些东西!
例如, ngClick
指令将引号之间的任何内容作为expression式处理:
<!-- so dont do this! --> <!-- <button ng-click="activate({{item}})">... -->
{} – 单个大括号:
{}
如我们所知,代表JavaScript中的对象。 这里也没什么不同:
<div ng-init="distanceWalked = {mon:2, tue:2.5, wed:0.8, thu:3, fri:1.5, sat:2, sun:3}">
用像ngClass
或ngStyle
这样的接受map的指令:
<span ng-style="{'color' : 'red'}">{{viruses.length}} viruses found!</span> <div ng-class="{'green' : vegetable == 'lettuce', 'red' : vegetable == 'tomato'}">..
没有大括号:
正如已经提到的,只是在内部expression式的时候没有使用。 非常简单:
<div ng-if="zoo.enclosure.inmatesCount == 0"> Alarm! All the monkeys have escaped! </div>
关于“{{}}”还有一件事,它也被用作Watcher ..请尽可能避免更好的性能