Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
何时在angularJS中使用双大括号{{}_Angularjs_Angularjs Directive - Fatal编程技术网

何时在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选项

当你想得到它的值时,你用大括号,当你想把它作为变量时,你不用大括号。谢谢你详细的回答,这很有意义。关于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 }"