当前位置: 首页 > 面试题库 >

何时在angularJS中使用双括号{{}}

蔺山
2023-03-14
问题内容

取自Angular文档:

角表达式
角表达式是类似JavaScript的代码段,主要放置在插值绑定中,例如

<span title="{{ attrBinding }}">{{ textBinding }}</span>

但也可直接用于指令属性,例如ng-click="functionExpression()"

例如,以下是Angular中的有效表达式:

1 + 2 a + b user.name项目[索引]

但是,对于何时使用双括号语法{{}}以及何时不使用双括号语法,我有些困惑。该文档似乎建议您在指令属性中使用表达式时不需要它们(请参见上面的ng-
click示例)。

尽管以下有效的代码提供了相反的传闻证据:

<ul id="Menu">
        <li ng-repeat="appModule in applicationModules"
            id="{{appModule.Name}}"
            ng-class="{ 'selected' :  selectedAppModule == '{{appModule.Name}}' }" 
            ng-click="menuClicked(appModule.Name)">
            <a href="#Content/{{appModule.Name}}">{{appModule.Display}}</a>
        </li>
    </ul>

请注意,在ng-class指令中如何使用双括号,而在ng-click指令中则不使用双括号。

您如何知道何时使用它们以及何时不使用它们?


问题答案:

它取决于有问题的指令属性及其使用的绑定类型。此外,这取决于您在给定情况下的打算。

从您的示例:

ng-repeat="appModule in applicationModules"

不需要花括号,因为此表达式是通过ng-repeat指令内的angular求值的。

id="{{appModule.Name}}"

在这里,我们需要括号,因为我们希望id等于表达式的值。

ng-class="{ 'selected' :  selectedAppModule == '{{appModule.Name}}' }"

我很确定这可以写成:

ng-class="{ 'selected' :  selectedAppModule == appModule.Name }"

并且您得到相同的行为。

ng-click="menuClicked(appModule.Name)"

在此示例中,我们需要将ng-click绑定到名为menuClicked的方法。

通常,当我们要评估表达式以及处理属性时,我们通常不需要使用{{}},因为在许多情况下它们是在后台进行评估的。

简单提示 何时需要{{}}的经验法.ToString()则是将其视为-
方法的包装。将表达式转换为字符串确实有意义,然后使用{{}}也是如此。(非常欢迎任何反例)



 类似资料:
  • 问题内容: 我希望用户看到双大括号,但是Angular会自动将其绑定。这是与该问题相反的情况,即他们不希望在加载页面时看到用于绑定的花括号。 我希望用户看到以下内容: 但是Angular会替换为值。我认为这可能有效,但是angular仍然将其替换为值: plnkr:http://plnkr.co/edit/XBJjr6uR1rMAg3Ng7DiJ 问题答案: 文档@ ngNonBindable

  • 问题内容: 我有包含HTML的JSON变量。 这样做:显示Angular 而不是和。 如何使Angular呈现实际的HTML? 更新: 这是我的控制器: 然后在我的HTML中可以使用: 问题答案: 您要 显示 HTML(例如)还是 渲染 HTML(例如 Hello )? 如果要显示它,大括号就足够了。但是,如果您拥有的html具有html实体(如),则需要手动对其进行转义。 如果要渲染它,则需要使

  • 问题内容: 如您所知,角形和细枝形都有共同的控制结构-双花括号。如何更改Angular的默认值? 我知道我可以在Twig中做到这一点,但是在某些项目中,我只能做到JS。 问题答案: 您可以使用service 更改开始和结束插值标签。一个方便的地方是在模块初始化时。 https://docs.angularjs.org/api/ng/provider/$interpolateProvider

  • 问题内容: 如何在Ansible 1.9.2中转义双花括号? 例如,如何在以下shell命令中转义大括号? 问题答案: 这是一个非常干净和Ansible的本机解决方法,不依赖于花括号。我们假设之前我们刚刚使用 Ansible docker模块 引用了一个容器: 现在,在Variable中具有Docker容器的IP 。我还在我的文章《与Docker融为一体的婚姻》中发布了此变通办法。 [更新2015

  • 问题内容: 什么时候应该使用角度函数,什么时候应该使用angularjs指令?对我来说,他们都可以做同样的事情。 两者之间是否有差异或使用方式? 问题答案: 显然,它们并不相同。一种仅在控制器中使用;另一种仅用于控制器。另一个是对输入元素的指令。 但是即使在它们的应用中,它们也有所不同。 使用监视的表达式时,将在每个摘要循环上对其进行评估,如果有更改,则将调用处理程序。 使用,响应事件,显式调用处

  • 问题内容: AngularJS可以做的有趣的事情之一是将过滤器应用于特定的数据绑定表达式,这是一种方便的方法,例如,应用区域性特定的货币或模型属性的日期格式。在范围上具有计算属性也很好。问题在于这些功能都不适用于双向数据绑定方案- 从作用域到视图仅单向数据绑定。在一个本来不错的图书馆中,这似乎是一个明显的遗漏-还是我错过了什么? 在KnockoutJS中,我可以创建一个读/写计算属性,该属性允许我