2015-11-07 63 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); } –

相关问题