角JS的双花括号和单花括号的区别?

Moh*_*ain 190 angularjs

我是这个角度世界的新手,我对使用双花括号{{}}和单花括号{}有点困惑,或者有时没有使用花括号来包含像指令一样的表达式

  1. ng-class={expression}
  2. normal data binding like{{obj.key}}
  3. ng-hide='mydata==="red"'

Alw*_*ner 275

{{}} - 双花括号:

{{}} 是Angular表达式,当您希望将内容写入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>
Run Code Online (Sandbox Code Playgroud)

不要在已经表达的地方使用这些!

例如,该指令ngClick将引号之间的任何内容视为表达式:

<!-- so dont do this! -->
<!-- <button ng-click="activate({{item}})">... -->  
Run Code Online (Sandbox Code Playgroud)

{} - 单花括号:

{}我们知道在JavaScript中代表对象.在这里,没有什么不同:

<div ng-init="distanceWalked = {mon:2, tue:2.5, wed:0.8, thu:3, fri:1.5, 
sat:2, sun:3}">
Run Code Online (Sandbox Code Playgroud)

使用某些指令ngClassngStyle接受地图:

<span ng-style="{'color' : 'red'}">{{viruses.length}} viruses found!</span>

<div ng-class="{'green' : vegetable == 'lettuce', 
'red' : vegetable == 'tomato'}">..
Run Code Online (Sandbox Code Playgroud)

没有花括号:

正如已经提到的那样,只要在内部表达式中去做 非常简单:

<div ng-if="zoo.enclosure.inmatesCount == 0">
    Alarm! All the monkeys have escaped!
</div>
Run Code Online (Sandbox Code Playgroud)

 

  • 就像评论中提到的人一样,Double braces {{}}应该放在引号之间的ng-src指令中.但为什么ng-src能够做到这一点?是否有一个特殊类型的指令的名称,在引号内引用{{}}? (5认同)
  • 我不得不对此进行更多的研究以完全理解它,但我认为这篇博文真的有助于@CodeHater的回答,[为什么AngularJS有时会使用单括号{},有时会使用双括号{{}},以及有时没有大括号?](http://www.whitneyland.com/2013/02/why-does-angularjs-sometimes-use-single-braces-sometimes-double-braces-and-sometimes-no-braces.html) (5认同)
  • 我们可以在ng-src属性中使用{{}}和ng-include指令. (2认同)