【问题标题】:AngularJS: Concatenating Angular variables in HTML attributesAngularJS:在 HTML 属性中连接 Angular 变量
【发布时间】:2013-09-03 03:40:27
【问题描述】:

我是 AngularJS 的新手,但从我目前所见和所做的来看,这真是太棒了。我想要做的是在 HTML 属性内有一个 AngularJS 绑定,但将它与另一个字符串连接起来。我会这样做的主要地方是类和 id,因为我喜欢使用“thisform”和“thisdivid”等名称。我页面中的一个示例元素是:

<input type="checkbox" 
  name="tdl_task[]" 
  data-ng-checked="list.default" 
  id="tdl_task_{{ id }}" 
  data-ng-class="{tdl_item: true}" 
  data-ng-true-value="done" 
  data-ng-false-value="not_done" />

我希望它是这样的:

<input type="checkbox" 
  name="tdl_task[]" 
  data-ng-checked="list.default" 
  id="tdl_task_" + {{ id }} + "" 
  data-ng-class="{tdl_item: true}" 
  data-ng-true-value="done" 
  data-ng-false-value="not_done" />

但没有优点。我想这样做而不用 JavaScript 或 PHP 包装它,或者在控制器中为该属性创建另一个完整的绑定。

【问题讨论】:

  • 如果你使用 angular,输入应该总是有 ng-model。我会考虑使用它,因为如果您正确使用 ng-model,您通常也不需要 id 属性。
  • 对其进行了编辑,因此不会像那样被切断。 Stack 昨晚没有连接,所以当它再次连接时,我只是提交了那里的所有内容,因为我不想再次全部输入。
  • 米克尔是对的。如果您正在尝试创建一个 ID,那么您可能正在尝试做一些非棱角分明的事情。为什么需要身份证?是标签for 属性吗?
  • 可能是一个 for 属性。正如我所说,我也可以将它用于课程。重点不是问我为什么应该或不应该这样做,而是问我是否以及如何做到这一点。

标签: javascript html angularjs concatenation


【解决方案1】:

为此,您必须创建一个指令。 id 由 html 本身提供,您无法修改其行为。因此,创建您自己的自定义指令,该指令将获取您的 id 并将其分配为您的 html 元素的 id。

To learn more about directive please visit

Details study on directives

【讨论】:

  • 我不想修改它的行为。它仍然是一个字符串,它只是一个带有变量的字符串。如果您将其包装在脚本标签中,您已经可以这样做了。
  • @trysis 谢谢...对于这个信息,我将在一些演示应用程序中尝试它。
【解决方案2】:

自从提出问题以来,不确定这是否是 Angular 中的新问题,但我遇到了完全相同的问题。事实证明,您可以让 Angular 评估 + 替换车把,方法是在它前面加上反斜杠 (),即 id="tdl_task_\{{id}}"

【讨论】:

  • 这不是 Angular 中的“新”(与 Angular 开始时的年龄相比),因为这个问题是在大约一年前提出的。不过,有趣的答案。
  • 好的,所以虽然这在某些情况下很好,但它不适合我,因为现在我得到一个 td1_task_\5 的 id,但 \ 真的很烦人。有什么提示吗?
猜你喜欢
  • 2017-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-05
  • 1970-01-01
  • 2014-10-22
相关资源
最近更新 更多