Javascript 是什么使得Angular.JS指令需要在其周围使用花括号?

Javascript 是什么使得Angular.JS指令需要在其周围使用花括号?,javascript,angularjs,Javascript,Angularjs,我一直在做Angular.JS上的代码学校教程,有一节特别让我困惑。下面是我指的代码片段: <section class="tab" ng-controller="TabController as tabs"> <ul class="nav nav-pills"> <li ng-class="{active:tabs.isSet(1)}"> <a href ng-click="tabs.setTab(1)">De

我一直在做Angular.JS上的代码学校教程,有一节特别让我困惑。下面是我指的代码片段:

<section class="tab" ng-controller="TabController as tabs">
    <ul class="nav nav-pills">
      <li ng-class="{active:tabs.isSet(1)}">
        <a href ng-click="tabs.setTab(1)">Description</a></li>
      <li ng-class="{active:tabs.isSet(2)}">
        <a href ng-click="tabs.setTab(2)">Specs</a></li>
      <li ng-class="{active:tabs.isSet(3)}">
        <a href ng-click="tabs.setTab(3)">Reviews</a></li>
    </ul>
</section>

这取决于您使用的指令。如果您只是试图设置一个布尔值,一个函数调用或一个布尔控制器参数就足够了。其他指令可能更复杂,并且具有不同的参数要求。当你开始制定自己的指令时,你会发现

对于
ngClass
,这是因为您可以有条件地同时设置多个类。有几种方法可以做到这一点,但语法相当清楚()

这是文档中的一个示例:

<p ng-class="{strike: deleted, bold: important, 'has-error': error}">Map Syntax Example</p>
映射语法示例


以下是相关的指令:

它取决于您使用的指令。如果您只是试图设置一个布尔值,一个函数调用或一个布尔控制器参数就足够了。其他指令可能更复杂,并且具有不同的参数要求。当你开始制定自己的指令时,你会发现

对于
ngClass
,这是因为您可以有条件地同时设置多个类。有几种方法可以做到这一点,但语法相当清楚()

这是文档中的一个示例:

<p ng-class="{strike: deleted, bold: important, 'has-error': error}">Map Syntax Example</p>
映射语法示例


下面是相关的提示:

首先,您应该了解这些约定是完全任意的。他们是由有棱角的作者决定的。他们可以很容易地使用其他字符,例如感叹号

ng-class="!active: true, otherClass: false!"
这些值不是代码。它们只是字符串(纯文本)。angular中有一些javascript解析这些字符串并理解它们。它在每个字符上循环并查找某些关键字符,如大括号

也就是说,他们之所以选择他们所扮演的角色是有原因的。他们试图在html中模仿javascript。传递给
ng click
的值表示javascript中的函数调用。并非巧合,这就是在javascript中调用函数的方式

tabs.setTab(1)
{ active: tabs.isSet(1) }
但是,传递给
ng类的值不模拟函数调用。它在模仿一个物体。这就是如何在javascript中声明对象

tabs.setTab(1)
{ active: tabs.isSet(1) }

这表示一个对象,其键为
active
,值为
tabs.isSet(1)
,其计算结果为一个布尔值,告诉您是否应应用该类。首先,您应该了解这些约定是完全任意的。他们是由有棱角的作者决定的。他们可以很容易地使用其他字符,例如感叹号

ng-class="!active: true, otherClass: false!"
这些值不是代码。它们只是字符串(纯文本)。angular中有一些javascript解析这些字符串并理解它们。它在每个字符上循环并查找某些关键字符,如大括号

也就是说,他们之所以选择他们所扮演的角色是有原因的。他们试图在html中模仿javascript。传递给
ng click
的值表示javascript中的函数调用。并非巧合,这就是在javascript中调用函数的方式

tabs.setTab(1)
{ active: tabs.isSet(1) }
但是,传递给
ng类的值不模拟函数调用。它在模仿一个物体。这就是如何在javascript中声明对象

tabs.setTab(1)
{ active: tabs.isSet(1) }

这表示一个对象,其键为
active
,值为
tabs.isSet(1)
,其计算结果为一个布尔值,告诉是否应应用该类

花括号与JavaScript中的花括号相同;您正在传递一个对象,该对象是一系列类名称的键/值对作为键,
true
false
作为值;您正在传递一个对象,该对象是一系列类名称的键/值对作为键,
true
false
作为值。