<script type="text/template">
     <div class="abcd">
           <div class="efg" data-price="{{::displayPrice}}"></div>
     </div>
</script>

J'ai un modèle comme celui-ci, et je dois ajouter {{::displayPrice}}, qui est une variable dans la portée, à la partie data-price du div. Cependant, div est écrit dans une balise <script>, ce qui l'empêche de fonctionner.

Quelqu'un pourrait-il me dire comment faire cela?

0
user7424637 16 janv. 2017 à 12:34

2 réponses

Meilleure réponse

Vous pouvez le transformer en modèle angulaire en utilisant type="text/ng-template", de cette façon angular le compilera avec toutes les variables disponibles sur les variables de portée actuelles:

<script type="text/ng-template" id"/my-template.html">
 <div class="abcd">
   <div class="efg" data-price="{{::displayPrice}}"></div>
 </div>

Maintenant vous pouvez l'utiliser comme modèle de routeur ou comme ng-include="'my-template.html'".

Si vous ne pouvez pas changer de type de modèle, vous pouvez compiler le code HTML des modèles dans votre contrôleur (en utilisant jQuery par exemple et le service $compile), quelque chose comme:

var yourAngularTpl = jQuery('[type="text/template"]').eq(0).html();
yourAngularTpl = $complie(yourAngularTpl)($scope);

Assurez-vous que $scope et $complie sont injectés et que vous avez jQuery (car jQuery Light angular.element() est limité)

0
Andriy 16 janv. 2017 à 09:59

En angulaire que nous utilisions dans votre contrôleur (app.js)

$scope.price = "display some price";

Dans votre html

<div>{{price}}</div>
0
Thailand 16 janv. 2017 à 10:48