2015-11-07 65 views
1

如果有問題。 請幫我看看有什麼不對。AngularJS分頁和無法讀取未定義的屬性「片」

有我的代碼:

(function() { 

    var app = angular.module('store', ['ui.bootstrap']); 

    app.controller('StoreController', function ($scope, $http) { 
     $scope.pageSize = 20; 
     $scope.currentPage = 1; 
     $http.get("../scripts/products.php").success(function (data) { 
      $scope.products = data; 
     }); 

    }).filter('startFrom', function() { 
     return function (data, start) { 
      return data.slice(start); 
     }; 
    }); 
})(); 

和HTML:

<div class="col-md-2 product " ng-hide="product.soldOut" ng-repeat="product in products| orderBy:sortorder | filter: searchBox | startFrom:(currentPage - 1) * pageSize | limitTo: pageSize"> 
    <img src="../products/{{product.image}}"> 
    <h4>{{product.nazwa}} 
     <br> 
     <br> 
    </h4> 
    <strong>{{product.cena| currency:"PLN "}}</strong> 

    <div class="colored">{{product.usagee}}</div> 
    <div class="buttons"> 
     <a href="/product/{{product.id}}" class="btn btn-default btn-sm" style="">Szczegóły</a> 
     <a href="/product/{{product.id}}" class="btn btn-success btn-sm" ng-show="product.dostepny">Kup</a> 
    </div> 
</div> 
<div class="col-md-12"> 
    <uib-pagination class="pagination-sm" previous-text="Poprzednia" next-text="Następna" total-items='products.length' ng-model='currentPage' items-per-page='pageSize'></uib-pagination> 
</div> 

我正在尋找在谷歌和堆棧,但我找不到什麼好的解決辦法。

+0

會發生什麼情況是過濾器在從服務器返回數據之前被調用。 – toskv

+0

不,它不重複... –

+0

看來產品還沒有定義。在數據被定義的過濾器中添加一個檢查。其他方法是初始化產品以清空控制器中的數組 – Dvir

回答

1

您必須檢查$ scope.products是否被定義,好像它在服務器返回其數據之前未定義。

您可以在過濾器中設置要在控制器中定義的數據或初始化產品的空白陣列。

+0

它正在工作:) 我加 if(data!= null){ return data.slice(start); } –

相關問題