【问题标题】:Angular doesn't bind repeater after first push to array第一次推送到数组后,Angular 不绑定中继器
【发布时间】:2018-01-05 20:28:39
【问题描述】:

我有一个绑定到数组的角度中继器。当我推送一个新项目时,UI 会按预期更新,但对于后续推送,数组会更新但 UI 不会更改。我已经尝试过scope.$apply(),但没有任何区别。

var app = angular.module('m', []);

app.controller('myCtrl', function ($scope) {
    $scope.maxValue = 6;
    $scope.values = [1,2,3,4,5,6];

    $scope.update = function (){
        $scope.maxValue++
        $scope.values.push($scope.maxValue);
        //$scope.$apply();
    }
});

不知道我做错了什么。 Here's a small example that replicates the problem.

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    这是因为您一次又一次地使用相同的值会产生重复的元素,请尝试使用 track by index

     <li data-ng-repeat="item in values track by $index"> 
    

    working fiddle

    【讨论】:

    • ng-repeat 默认不允许重复?在我的真实应用程序(不是这个例子)中,我实际上是在推送一个对象,每次都不同,所以我不明白为什么它不起作用。它是否通过某些默认属性(例如“id”)进行跟踪?
    • 不,它不允许重复,顺便说一句,你是在推动一个字符串而不是一个对象
    猜你喜欢
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多