【问题标题】:How to create an independent indexer with default value inside ngRepeat loop如何在 ngRepeat 循环中创建具有默认值的独立索引器
【发布时间】:2017-05-14 09:47:18
【问题描述】:

我有一个带有 cmets 的帖子列表。我需要遍历页面上每个帖子中的 cmets 数组。我正在尝试在 ngRepeat 中为帖子创建变量,我可以像索引器一样使用它来显示每个帖子的准确评论。由于 ngRepeat 创建了嵌套范围,因此该变量对于每次迭代都必须是唯一的。但是当我尝试用 ng-click 改变它时,它并没有改变。

我的 ngRepeat:

<div class="question_block col-xs-12" 
                         ng-repeat="answer in question.content.answer track by answer.id">

后跟&lt;span style="display:none"&gt;{{counter=0}}&lt;/span&gt;。然后我会展示一些像&lt;span&gt;{{answer.comments[counter].user.organization.title}}&lt;/span&gt; 这样的项目。当我尝试做类似&lt;a href ng-click="counter++"&gt;Increment&lt;/a&gt; 的事情时,什么也没有发生。怎么了?

【问题讨论】:

    标签: angularjs angularjs-ng-repeat


    【解决方案1】:

    使用 ng-init="counter = 0" 并将您的 ng-click 附加到控制器中的函数:

    <div ng-repeat="item in items track by $index" ng-init="counter=0">
      {{item}} ({{counter}})
      <button ng-click="clickHandler()">Increment</button> 
      <hr />
    </div>
    

    然后,要在事件上下文中增加counter,请使用this.counter

    $scope.clickHandler = function() {
     this.counter++;
    };
    

    Plunker 演示:http://plnkr.co/edit/J4d0JlJSKD7i4OfMT2r4?p=preview

    【讨论】:

    • 出于想法,我试图对函数执行相同的操作来增加,但将索引作为参数传递并没有好处。关键是使用 this 来处理当前范围变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-04
    • 2023-03-28
    • 2020-07-02
    相关资源
    最近更新 更多