angularjs expression dans html <object> tag
J'ai un champ comme $scope.doc_details
dans mon angularjs contrôleur, et je veux l'utiliser pour afficher un fichier pdf à l'aide d'une balise, comme ceci:
<object data="{{doc_details.file_url}}" type="application/pdf"></object>
mais il n'est pas chargé dans le navigateur, dans ma console chromée, tout ce que je vois est:
Failed to load resource: the server responded with a status of 404 (Not Found)
http://localhost/%7B%7Bdoc_details.file_url%7D%7D
et quand je viens de l'afficher à l'aide <span>{{doc_details.file_url}}</span>
de montrer la valeur.
Je parie que l'objet de l'évaluation de la chaîne avant angulaire a une chance de remplacer les données finales.
toute solution pour cela?
toute solution pour cela?
OriginalL'auteur AT_ | 2013-02-15
Vous devez vous connecter pour publier un commentaire.
Le problème ici est que le navigateur est de voir
dans les DOM avant Angulaire de la compile, et, évidemment,
{{doc_details.file_url}}
n'est pas une URL valide.Directives peuvent être votre ami ici.
De dire que nous voulons écrire:
Nous pouvons créer un très directive simple:
Cela permettra de différer la création de la
object
élément jusqu'à ce que nous avons réellement l'URL disponible à partir de la portée (en supposant que c'est déjà là - sinon, vous voulez$watch
lasrc
l'attribut dans le champ d'application jusqu'à ce qu'il est devenu disponible).Ici c'est dans un violon.
Rencontré ce problème lors de l'utilisation angular2. Toute réflexion sur la façon d'utiliser les données de liaison avec <object> tag?
OriginalL'auteur
De AngularJS 1.1.4, vous pouvez utiliser le
ng-attr-
préfixe pour lesdata
attribut:Voir le
ngAttr
pour la liaison à l'arbitraire des attributs section sur AngularJS: Interpolation et de liaison de données.est-ce encore le cas aujourd'hui? Je ne peux pas semblent facilement google "objet élément html angularjs" je reçois un tas de résultats sur la transmission des objets de logiciel et non de l'élément html d'objets. Je suis étrange problème avec mon code. Une nouvelle réponse à cette ou un lien vers des docs va aider merci 🙂
C'est encore le cas avec IE 11.
OriginalL'auteur
Le navigateur essaie de traiter la chose avant d'AngularJS remplacé le angulary expression avec quelque chose que le navigateur peut travailler avec, ce qui provoque une erreur.
L'ajout d'un
ng-cloak
résout le problème.OriginalL'auteur
Vous devez d'abord vérifier si la réponse est un arraybuffer, si elle l'est, le convertir en base 64. Vous pouvez également utiliser setattribute à attribuer.
OriginalL'auteur