Ich weiß, das ist lang, aber bitte ertragen mit mir. Das Problem ist leicht zu verstehen, braucht nur etwas zu schreiben, um es vollständig zu erklären.AngularJS multiple Ausdrücke verketten in Interpolation mit einer URL
Im Moment bin ich immer diese Fehlermeldung
Error: [$interpolate:noconcat] Error while interpolating:
Strict Contextual Escaping disallows interpolations that concatenate multiple expressions when a trusted value is required.
See http://docs.angularjs.org/api/ng.$sce
ich die ganze Lesung in der Dokumentation gemacht habe, aber ich kann immer noch nicht eine Lösung für mein Problem finden.
Ich verwende $ http.get auf einer privaten Online-Quelle, die Daten hat, die der Form einer JSON-Datei ähnelt (so kann ich die Daten nicht ändern). Die Daten sieht wie folgt aus:
...
"items": [
{
"kind": "youtube#searchResult",
"etag": "\"N5Eg36Gl054SUNiWWc-Su3t5O-k/A7os41NAa_66TUu-1I-VxH70Rp0\"",
"id": {
"kind": "youtube#video",
"videoID": "MEoSax3BEms"
},
},
{
"kind": "youtube#searchResult",
"etag": "\"N5Eg36Gl054SUNiWWc-Su3t5O-k/VsH9AmnQecyYBLJrl1g3dhewrQo\"",
"id": {
"kind": "youtube#video",
"videoID": "oUBqFlRjVXU"
},
},
...
Ich versuche, die videoId der einzelnen Elemente in meine HTML iframe zu interpolieren, die die YouTube-Video einbettet. In meiner controller.js Datei, habe die Einrichtung ich das Versprechen Objekt nach dem $ http.get als solche
$http.get('privatesource').success(function(data) {
$scope.videoList = data.items;
});
So, jetzt die Variable „$ scope.videoList“ auf data.items abgebildet wird, die viel haben von Videoelementen. In meiner HTML-Datei kann ich die videoID jedes Videos mit
<ul class="videos">
<li ng-repeat="video in videoList">
<span>{{video.id.videoID}}</span>
</li>
</ul>
abrufen, und das listet alle videoIDs auf. Aber wenn ich versuche, diese Werte zu einer URL zu verketten, wie https://youtube.com/embed/, funktioniert es nicht.
Gibt es eine Möglichkeit, die VideoID in die Youtube URL interpolieren zu lassen Ich habe versucht, durch Whitelisting die $ sceDelegateProvider wie folgt verwendet, aber es funktioniert immer noch nicht
$sceDelegateProvider.resourceUrlWhitelist([
'self',
'https://www.youtube.com/**']);
Jede Hilfe sehr geschätzt wird. Vielen Dank!
+1 und danke für Ihre Antwort, weil alle anderen Antworten darauf angewiesen waren, eine URL als vertrauenswürdige $ sce-Ressource zu codieren, anstatt sie als Vorlage zu füllen. – DrewT
Danke. Wie listen Sie die URL auf die weiße Liste auf? – molerat
@molerat Durch Injizieren und Verwenden von '$ sceDelegateProvider' im Konfigurationsblock. Zum Beispiel: '$ sceDelegateProvider.resourceUrlWhitelist (['self', 'https://www.youtube.com/**']);' – tasseKATT