【问题标题】:Increment/decrement into angular expression (id generation)角度表达式的增量/减量(id 生成)
【发布时间】:2015-12-08 01:18:11
【问题描述】:

我想像这样在嵌套的 ng-repeats 中增加:

<div ng-repeat="arr in extension.providers">
     <div id="pos{{++providerId}}"
          ng-repeat="provider in arr track by provider.id">
     </div>
</div>

在哪里

$scope.providerId = 0;

但我得到错误

Error: [$parse:syntax] Syntax Error: Token '+' not a primary expression at column 11 of the expression ['pos' + (providerId++)] starting at [+providerId)].

我尝试在函数中写入增量,例如在 answer 中,但得到的 id 像“pos398”、“pos400”等。

如何在我的网页上生成 id?

【问题讨论】:

  • 您不能将计数逻辑放在角度视图中。它会运行成百上千次,与 $watchers 数成正比。

标签: javascript angularjs auto-increment


【解决方案1】:

如果您使用ng-repeat 来生成div 元素,我假设您可以简单地使用循环的$index 来生成ID。

在您的情况下,您嵌套了ng-repeat,因此如果您想访问父级$index

<div ng-repeat="arr in extension.providers">
  <div ng-repeat="provider in arr track by provider.id" id="pos{{$parent.$index}}">
  </div>
</div>

或者你可以简单地使用$index,正如这个 plunkr 所展示的那样:

http://plnkr.co/edit/d8YPSHqLYkPtqovGpxbv?p=preview

【讨论】:

  • 很遗憾,它不起作用。我在所有元素上都有 id="pos1"。
  • @Salasar 你是在 ng-repeat 中使用它还是?
  • 嵌套 ng-repeats,然后我不能使用 $index.您的答案没有在变量中保存更改的值,那么 providerId 如何是唯一的?
  • @Salasar 如果您需要适当的帮助,您将不得不向我们展示更多代码。
  • @Salasar 对于嵌套的ngrepeat,在外部ngrepeat 行上使用ng-init="topIndex = $index"。这些都有记录。
【解决方案2】:

我的问题的答案:

<div ng-repeat="arr in extension.providers" ng-init="topIndex = $index">
     <div id="pos{{topIndex.toString() + $index.toString()}}"
          ng-repeat="provider in arr track by provider.id">
     </div>
</div>

结果,我得到了唯一的 ID,例如 pos00、pos01、pos10、p​​os11....

感谢ChrillewoodzBeyers 的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-02
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 2010-12-06
    相关资源
    最近更新 更多