AngularJS: How to change ng-repeat limitTo based on variable?

眉间皱痕 提交于 2019-12-18 02:44:09

问题


I would like to show a different limitTo number on Angular.js ng-repeat, based on a variable.

Here is my code:

<input type="text" ng-model="search" ng-change="checkNewCard(search)"/>
<div ng-repeat="score in scores | filter:search | limitTo:6" ng-hide="search">
...
</div>
<div ng-repeat="score in scores | filter:search | limitTo:5" ng-hide="!search">
...
</div>
<div new-card name="search" ng-show="showNewCard"></div>

and in the controller:

$scope.showNewCard = false;
$scope.checkNewCard = function (search) {
if (search == "")
    $scope.showNewCard = false;
else {
    $scope.showNewCard = true;
    }
};

I can only assume there is a more elegant way of changing the limitTo based on the search input, I just have no idea what to look for.

You can see the implementation of this code on http://happinesshunt.co.

P.S. I'm new here and new to development in general, so please forgive me if the question wasn't asked properly.

Thanks ahead!


回答1:


Here could be a first solution (since it can be improved, e.g. by hiding/displaying the more/less links):

<div ng-repeat="score in scores | limitTo: limit">
...
</div>
<a href ng-click="incrementLimit()">more</a>
<a href ng-click="decrementLimit()">less</a>

In your controller:

var limitStep = 5;
$scope.limit = limitStep;
$scope.incrementLimit = function() {
    $scope.limit += limitStep;
};
$scope.decrementLimit = function() {
    $scope.limit -= limitStep;
};



回答2:


placing a function inside of an ng-click is good procedure, but we can directly increment inside that also here one example..

<input type="text" ng-model="lmt"/><!--model with text box-->

<button ng-click="lmt=lmt+1">INCREMENT</button><!--model with INCREMENT btn-->
    <button ng-click="lmt=lmt-1">DECREMENT</button><!-- with DECREMENT btn-->

    <select ng-model="lmt"><!--select options also-->
    <option>20</option>
    <option>50</option>
    <option>100</option>
    </select>

        <table>
    <tr ng-repeat="employee in employData|limitTo: lmt"><!--lmt is the variable-->

        <td>{{employee.regNo}}</td>
        <td>{{employee.name}}</td>
      <!-----other------>
        </tr>
     </table>

and in controller,

$scope.lmt=20; /or something
$scope.employeeData={something............};


来源:https://stackoverflow.com/questions/22984727/angularjs-how-to-change-ng-repeat-limitto-based-on-variable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!