Existe-t-il un moyen de faire en sorte que AngularJS évalue une expression dans les données du modèle?
HTML:
<p> {{Txt}} </p>
Maquette:
{ Txt: "This is some text {{Rest}}" } { Rest: "and this is the rest of it." }
Le résultat final serait: This is some text and this is the rest of it
.
Vous pouvez utiliser le service $interpolate
pour interpoler la chaîne …
function ctrl ($scope, $interpolate) { $scope.Txt = "This is some text {{Rest}}"; $scope.Rest = "and this is the rest of it."; $scope.interpolate = function (value) { return $interpolate(value)($scope); }; }
<div ng-app ng-controller="ctrl"> <input ng-model="Txt" size="60" /> <p>{{ Txt }}</p> <p>{{ interpolate(Txt) }}</p> </div>
JSFiddle
Vous pouvez exécuter JS entre parenthèses:
<p>{{Txt + ' ' + Rest}}</p>
Ou créez une fonction qui renvoie le texte souhaité:
$scope.getText = function() { return $scope.Txt + ' ' + $scope.Rest; } <p>{{getText()}}</p>
Comme vous utilisez javascript pour le modèle, vous pouvez faire quelque chose de simple comme ceci:
var rest = 'and this is the rest of it'; $scope.txt = 'This is some text ' + rest;
Et dans la vue, conservez votre <p>{{txt}}</p>
Vous pouvez également lier les expressions ensemble <p>{{txt}} {{rest}}</p>