2017-04-07 3 views
0

J'ai une liste d'articles avec leurs informations. Le problème est que je veux afficher la description jusqu'à 50 caractères. Si cette valeur est dépassée, je veux afficher un bouton show more. Quand cela est cliqué, je veux montrer le texte intégral. Je veux le faire avec des filtres mais je ne sais pas comment y parvenir.Afficher plus de fonctionnalités dans AngularJS?

{{jobs.description | limitTo: 2}}{{jobs.description.length>20 ? '...':''}} 

Est-il possible que je peux écrire <a href="">show more</a> lien à l'emplacement des personnages ...?

Ou existe-t-il une autre méthode pour atteindre mon objectif?

+0

avez-vous vérifié ma réponse? –

+0

Rohit s'il vous plaît exécuter l'extrait –

+0

Merci de me corriger.J'ai mis à jour mon extrait de réponse. pouvez-vous s'il vous plaît vérifier maintenant. –

Répondre

1

Observation:

  • Votre implémentation est correcte. Le problème est avec votre version AngularJS.
  • Les AngularJS limitTo filtre est disponible pour les chaînes de tableau et v1.2.1 partir.

travail Démo

var myApp = angular.module('myApp',[]); 
 

 
myApp.controller('MyCtrl', function($scope) { 
 

 
    // Initial 50 characters will be displayed. 
 
    $scope.strLimit = 50; 
 

 
    // String 
 
    $scope.jobs = { 
 
     description: "Hi I have a list of items along with their information. The problem is I want to show the description up to 50 letters, but if it exceeds this value I want to show show more button upon clicking it I want to show the full text. I want to do it with filters, but I don't know one could achieve this with my way." 
 
    }; 
 

 
    // Event trigger on click of the Show more button. 
 
    $scope.showMore = function() { 
 
    $scope.strLimit = $scope.jobs.description.length; 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="MyCtrl"> 
 
    {{ jobs.description | limitTo:strLimit }} 
 
    <span ng-if="jobs.description.length > 50"> 
 
    <button ng-click="showMore()">Show more</button> 
 
    </span> 
 
</div>

Mise à jour Plnkr selon le commentaire avec show less fonctionnalité.

var myApp = angular.module('myApp',[]); 
 

 
myApp.controller('MyCtrl', function($scope) { 
 

 
    // Initial 50 characters will be displayed. 
 
    $scope.strLimit = 50; 
 

 
    // String 
 
    $scope.jobs = { 
 
     description: "Hi. I have a list of items along with their information. The problem is I want to show the description up to 50 letters, but if it exceeds this value I want to show show more button upon clicking it I want to show the full text. I want to do it with filters, but I don't know one could achieve this with my way." 
 
    }; 
 

 
    // Event trigger on click of the Show more button. 
 
    $scope.showMore = function() { 
 
    $scope.strLimit = $scope.jobs.description.length; 
 
    }; 
 

 
    // Event trigger on click on the Show less button. 
 
    $scope.showLess = function() { 
 
    $scope.strLimit = 50; 
 
    }; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp" ng-controller="MyCtrl"> 
 
    {{ jobs.description | limitTo:strLimit }} 
 
    <span ng-if="jobs.description.length > 50 && jobs.description.length != strLimit"> 
 
    <button ng-click="showMore()">Show more</button> 
 
    </span> 
 
    <span ng-if="jobs.description.length == strLimit"> 
 
    <button ng-click="showLess()">Show less</button> 
 
    </span> 
 
</div>

+0

Est-ce que tout le monde voit ces erreurs de script dans la console de l'extrait ou est-ce juste moi? –

+0

Qu'en est-il de montrer moins? –

+0

dans votre question vous écrivez à propos de 'show more' seulement .hence, la fonctionnalité' show less' n'a pas été implémentée. Si vous voulez, je peux aussi écrire "montrer moins". –

1

Vous ne avez pas besoin de directives pour y parvenir.

Il suffit de se référer à plnkr.co/edit/G3XxBnvAKhc53qy4foPr?p=preview; Je viens de créer un échantillon. Le filtre limitTo est plus que suffisant pour atteindre.