何时在angularJS中使用双大括号{{}
摘自角度文档:何时在angularJS中使用双大括号{{},angularjs,angularjs-directive,Angularjs,Angularjs Directive,摘自角度文档: 角度表达式是类似JavaScript的代码片段,主要是 放置在插值绑定中,例如 请注意,在ng class指令中如何使用双大括号,而在ng click指令中则没有 如何知道何时使用和何时不使用它们?这取决于所讨论的指令属性及其使用的绑定类型。此外,这还取决于你在特定情况下的意图 从你的例子来看: ng-repeat="appModule in applicationModules" 不需要大括号,因为此表达式是通过ng repeat指令内的ANGLANG计算的 这里我们需要
角度表达式是类似JavaScript的代码片段,主要是 放置在插值绑定中,例如 请注意,在ng class指令中如何使用双大括号,而在ng click指令中则没有
如何知道何时使用和何时不使用它们?这取决于所讨论的指令属性及其使用的绑定类型。此外,这还取决于你在特定情况下的意图 从你的例子来看:
ng-repeat="appModule in applicationModules"
不需要大括号,因为此表达式是通过ng repeat指令内的ANGLANG计算的
这里我们需要大括号,因为我们希望id等于表达式的值
我很确定这可以写成:
ng-class="{ 'selected' : selectedAppModule == appModule.Name }"
你也会有同样的行为
在本例中,我们需要将ng click绑定到名为menuClicked的方法
通常,当我们想要计算表达式时,我们使用{{},当我们处理属性时,我们并不总是需要使用{{},因为在许多情况下,它们是在幕后计算的
简单提示何时需要{{}的经验法则是将它看作
.ToString()
-方法的包装器。将表达式转换为字符串有意义吗?然后使用{{}也有意义。(非常欢迎任何反例)查看文档避免在以下情况下使用插值
文档说明该指令采用表达式。在ngsrc
的情况下,文档明确说明使用{{}
。如果属性不是AngularJS指令,请使用插值
错误的
上面的示例是混合插值和角度压缩的示例
而是使用:
ng-class="{ 'selected' : selectedAppModule == appModule.Name }"
从文档中:
为什么混合插值和表达式是不好的做法:
- 它增加了标记的复杂性
- 不能保证它对每个指令都有效,因为插值本身就是一个指令。如果另一个指令在插值运行之前访问属性数据,它将获取原始插值标记,而不是数据
- 它会影响性能,因为插值会向作用域添加另一个观察者
- 因为这不是推荐的用法,所以我们不会对此进行测试,对AngularJS core的更改可能会破坏您的代码
更新 不要将插值用于:
,请参阅ng已选择
,请参阅ng已禁用
ng必需的
ng如果
ng show
ng隐藏
ng打开
ng值
ng重复
ng选项
id="{{appModule.Name}}"
ng-class="{ 'selected' : selectedAppModule == '{{appModule.Name}}' }"
ng-class="{ 'selected' : selectedAppModule == appModule.Name }"
ng-click="menuClicked(appModule.Name)"
ng-class="{ 'selected' : selectedAppModule == '{{appModule.Name}}' }"
ng-class="{ 'selected' : selectedAppModule == appModule.Name }"