【问题标题】:AngularJS $index always 0AngularJS $index 总是 0
【发布时间】:2016-08-28 19:59:38
【问题描述】:

我遇到了 angularjs 和 $index 的问题

我把它作为一个函数的参数。它适用于 {{}} 中的 HTML({{$index}} 有效)。但它在功能中不起作用。我提醒索引,它总是 0...

我在项目的另一个位置使用它,它工作正常..

这是代码。

<input type="checkbox" id="rounded1" ng-click="setClickEvent($index)" ng-model="clickStatus"/>

带有函数的JS文件:

$scope.setClickEvent = function(index) {
  alert(index);

};

警报始终为 0....

我希望有人可以帮助我。谢谢:)

【问题讨论】:

  • 也分享与 ng-repeat 相关的标记

标签: javascript angularjs function indexing


【解决方案1】:

不确定这是否相关,但我遇到了同样的问题。对我来说,问题是我嵌套了多个 ng-repeats。为了解决这个问题,我使用 ng-init 为索引设置别名。

https://docs.angularjs.org/api/ng/directive/ngInit

<script>
  angular.module('initExample', [])
    .controller('ExampleController', ['$scope', function($scope) {
      $scope.list = [['a', 'b'], ['c', 'd']];
    }]);
</script>
<div ng-controller="ExampleController">
  <div ng-repeat="innerList in list" ng-init="outerIndex = $index">
    <div ng-repeat="value in innerList" ng-init="innerIndex = $index">
       <span class="example-init">list[ {{outerIndex}} ][ {{innerIndex}} ] = {{value}};</span>
    </div>
  </div>
</div>

【讨论】:

    【解决方案2】:

    抱歉,这里是带有 ng-repeat 的整个 html 代码

    <div ng-repeat="frage in frageListe">
            <div class="input-group">
                <div class="container-fluid list-group-item ">
                    <div class="rounded">
                        <input type="checkbox" id="rounded1" ng-click="setClickEvent(frage.id)" ng-model="clickStatus"/>
                        <label for="rounded1"></label>
                    </div>
                    <div class="list-text">
                        <h3 class="list-group-item-heading quest-list-text serif">{{frage.titel}} {{$index}}</h3>
                    </div>
                </div>
            </div>
            <hr class="divider-line-questlist">            
    
            </div>
    

    【讨论】:

    • 您对此有什么解决方案吗?我这里也有同样的问题。
    【解决方案3】:

    您似乎没有在 ng-repeat 指令中使用此 &lt;input&gt; 标记。 $index 将显示 0,除非它在 ​​ng-repeat 中使用,它将从 0 计数到 n。

    也许你打算这样做:

    <div ng-repeat="i in [1, 2, 3, 4, 5] track by $index">
        <input type="checkbox" ng-click="setClickEvent($index)" ng-model="clickStatus"/>
    </div>
    

    我删除了 ID,因为 5 个复选框中的每一个都有相同的无效 ID。

    【讨论】:

    • OP 说在 html 中使用 {{$index}} 效果很好。我认为在 ng-repeat 中,只是不包含代码,这就是 Rayon 要求相关 ng-repeat 代码的原因。
    • 我怀疑他没有使用 ng-repeat,这就是 $index 始终为 0 的原因。我想我们需要来自 OP 的更多信息才能真正解决这个问题。
    • 是的,这也是我最初的想法……这似乎是最有意义的。但是,由于 OP 说 {{$index}} 工作得很好,在我看来这是一个不同的问题,我们需要更多的上下文来确认
    猜你喜欢
    • 2022-11-03
    • 2018-12-13
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多