Javascript 是什么使得Angular.JS指令需要在其周围使用花括号?
我一直在做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
<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
作为值。