Comment ajouter mainCtrl.header.Version
dans la chaîne de texte si la condition dans ng-attr-title
est fausse?
HTML
<label class="form-control" ng-attr-title="{{mainCtrl.header.Version == 0 ? 'This form has not yet been submitted for approval' : 'This form has been submitted for approval {{mainCtrl.header.Version}} times'}}">{{mainCtrl.header.Version}}</label>
3 Réponses :
Vous pouvez y parvenir du côté du contrôleur JS. Prenez une variable title
vérifiez si version
est 0 puis attribuez le titre que vous voulez Et si la version est supérieure à 0, concattez la version avec le message de titre. Veuillez prendre en compte l'extrait de code suivant.
<!DOCTYPE html> <html> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script> <body> <div ng-app="myApp" ng-controller="myCtrl as mainCtrl"> <label class="form-control" ng-attr-title="{{mainCtrl.title}}"> {{mainCtrl.header.Version}} </label> </div> <script> var app = angular.module('myApp', []); app.controller('myCtrl', function($scope) { var mainCtrl = this; mainCtrl.header = {"Version":0}; if( mainCtrl.header.Version == 0 ) { mainCtrl.title = "This form has not yet been submitted for approval"; } else { mainCtrl.title = "This form has not yet been submitted for " +mainCtrl.header.Version+" approval"; } }); </script> </body> </html>
vous pouvez le faire en appelant une fonction comme celle-ci:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script> <div ng-app="app"> <div ng-controller="htmlTitle"> <label class="form-control" title="{{get_title()}}" >{{mainCtrl.header.Version}}</label> </div> </div>
var app = angular.module('app', []); app.controller('htmlTitle', ['$scope','$http', function($scope, $http){ $scope.mainCtrl = { header: { Version: 0 } }; $scope.get_title = function(){ if($scope.mainCtrl.header.Version == 0){ return 'This form has not yet been submitted for approval'; } else{ return 'This form has been submitted for approval ' + $scope.mainCtrl.header.Version + ' times'; } } }]);
et voici un codepen . p >
La syntaxe est:
ng-attr-title="{{mainCtrl.header.Version == 0 ? 'This form has not yet been submitted for approval' : 'This form has been submitted for approval ' + mainCtrl.header.Version + ' times'}}"
ng-attr-title affiche la chaîne qui lui est donnée, vous devez donc utiliser {{expr}}.
Pour tester votre expression, je vous conseille d'écrire
pour voir quel est le résultat.
@PierreEmmanuelLallemant Merci pour la solution suggérée. Est-ce possible en utilisant simplement ng-attr-title?
ng-attr-title = "{{mainCtrl.header.Version == 0? 'Ce formulaire n'a pas encore été soumis pour approbation': 'Ce formulaire a été soumis pour approbation' + mainCtrl.header.Version + ' fois '}} "
devrait fonctionner@PierreEmmanuelLallemant J'ai déjà essayé cela mais cela n'a pas fonctionné. Je l'ai réessayé tout à l'heure et cela a fonctionné! J'ai dû manquer quelque chose. Pouvez-vous soumettre ceci comme réponse?