【问题标题】:Possible bug in Angular?Angular 中可能存在的错误?
【发布时间】:2014-04-02 06:12:47
【问题描述】:

我有下一个代码:

<ol class="breadcrumb">
    <li ng-repeat="ruta in rutas" >
        <a ng-click="seleccionarDirectorioRuta(ruta)" >{{ruta.nombre}}</a>
    </li>
</ol>

方法seleccionarDirectorioRuta:

$scope.seleccionarDirectorioRuta = function(directorio){
    alert($scope.rutas.length);
    $scope.directoriosActuales = [];
    $scope.rutas.push(directorio);
    alert($scope.rutas.length);
};

在警报中显示 1 和 2(或 n 和 n+1),但面包屑没有更新。

有什么想法吗?

【问题讨论】:

    标签: angularjs ng-repeat angularjs-ng-click


    【解决方案1】:

    我收到ngRepeat 不接受重复项的错误,但在我使用angular.copy 在推入$scope.rutas 时制作目录副本后,一切正常。

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

    $scope.seleccionarDirectorioRuta = function(directorio){
        $scope.rutas.push(angular.copy(directorio));
    };
    

    【讨论】:

      【解决方案2】:

      这不是 Angular 中的错误。这是因为当您运行该函数时,您将每次运行的数组都设置为空。如果不提取代码,我会假设您会想要以下内容:

      $scope.directoriosActuales = [];
      $scope.seleccionarDirectorioRuta = function(directorio){
          alert($scope.rutas.length);
          $scope.rutas.push(directorio);
          alert($scope.rutas.length);
      };
      

      但由于这可能会出错,我认为forEach 会有所帮助。

      你能告诉我将数组设置为 none 的原因吗?

      【讨论】:

      • ng-repeat="ruta in rutas",在这种情况下 $scope.directoriosActuales 与此无关。
      最近更新 更多