ng-repeat не обновляется после обновления массива в angularjs или представление не обновляется - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь разработать страницу продукта для веб-сайта электронной коммерции. Я использую angularjs ng-repeat для отображения списка продуктов. Я пробовал $ scope. $ Apply (), он выдает ошибку, как в процессе дайджеста. У меня тоже есть $ rootcope.

Единственное представление не обновляется, но когда я проверил в консоли, оно обновляется.

Вот мой код:

html

<a ng-click="addcolors('RED')">Red<i class="fa fa-plus"></i></a>
<a ng-click="addcolors('WHITE')">Red<i class="fa fa-plus"></i></a>
<div class="col-sm-4 col-xs-12" data-ng-repeat="products in products" >
  <div class="productBox">
    <div class="productImage clearfix">
      <img ng-src="{{products.image}}" alt="products-img" ">
      <div class="productMasking">
        <ul class="list-inline btn-group" role="group">
          <li><a data-toggle="modal" href=".login-modal" class="btn btn-default"><i class="fa fa-heart"></i></a></li>
          <li><a href="cart-page.html" class="btn btn-default"><i class="fa fa-shopping-cart"></i></a></li>
          <li><a class="btn btn-default" data-toggle="modal" href=".quick-view"><i class="fa fa-eye"></i></a></li>
        </ul>
      </div>
    </div>
    <div class="productCaption clearfix">
      <a href="single-product.html">
        <h5>{{products.productname}}</h5>
      </a>
      <h3>{{products.Price}}</h3>
    </div>
  </div>
</div>

Js

 $scope.selectedcolors = ["red"];

 $scope.addcolors = function (color) {
     // here i add the colors to the array
      $scope.loadfiltereddata();    
 }

 $scope.loadfiltereddata = function () {

      $scope.products = [];
      $scope.products.length = 0;

      console.log($scope.products);
      $scope.just = [];
      var productuniqueidpristine = "";
      var productuniqueidstored = "";
      var r = 0;
      var productvariants = {};
      var obj = {}

      var m = 0;
      $scope.colors = [];
      $scope.resultArray = [];          

      for (var i = 0; i < $scope.mainproductsdata.length; i++) {
          var index = functiontofindIndexByKeyValue($scope.mainproductsdata, "ColorName", $scope.mainproductsdata[i].ColorName);
          if ((index != null)||($scope.selectedcolors.length<1)) {
              var productuniqueidpristine = $scope.mainproductsdata[i].productuniqueid;
              var productuniqueidstored = $scope.mainproductsdata.filter(function (value) { return value.productuniqueid === productuniqueidpristine }).length;

              m = r + 1;
              if (m < productuniqueidstored) {
                  var productvariants = {
                      uniqueid: $scope.mainproductsdata[i].UniqueID,
                      colorname: $scope.mainproductsdata[i].ColorName,
                      colorcode: $scope.mainproductsdata[i].ColorCode,
                      sizename: $scope.mainproductsdata[i].SizeName
                  }

                  $scope.just.push(productvariants);

                  // $scope.just.push(productvariants);
                  r++;

              }
              else if (m == productuniqueidstored) {
                  var productvariants = {
                      uniqueid: $scope.mainproductsdata[i].UniqueID,
                      colorname: $scope.mainproductsdata[i].ColorName,
                      colorcode: $scope.mainproductsdata[i].ColorCode,
                      sizename: $scope.mainproductsdata[i].SizeName
                  }

                  $scope.just.push(productvariants);

                  var obj = {
                      id: $scope.mainproductsdata[i].id,
                      productname: $scope.mainproductsdata[i].productname,
                      image: $scope.mainproductsdata[i].productimage,
                      price: $scope.mainproductsdata[i].Price,
                      variants: $scope.just
                  };

                  $scope.products.push(obj);
                  r = 0;
                  $scope.just = []; 
              }
          }
      }
  }

1 Ответ

0 голосов
/ 06 января 2020

В первую очередь кажется, что в вашем html:

ОШИБКА

data-ng-repeat="products in products" >

есть опечатка:

data-ng-repeat="product in products" >

товар в продуктах Дайте мне знать, если это работает или нет.

...