Я знаю, что это долго, но, пожалуйста, несите меня. Проблема легко понять, просто требуется письменность, чтобы полностью объяснить ее.
Сейчас я получаю эту ошибку
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
Я все прочитал в документации, но я все еще не могу найти обходной путь для своей проблемы.
Я использую $http.get в частном онлайн-источнике, который имеет данные, похожие на форму json файла (поэтому я не могу изменять данные). Данные выглядят следующим образом:
...
"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"
},
},
...
Я пытаюсь интерполировать videoId каждого элемента в свой HTML iframe, который включает видео YouTube. В моем файле controller.js я устанавливаю объект обещания после $http.get как такового
$http.get('privatesource').success(function(data) {
$scope.videoList = data.items;
});
Итак, теперь переменная "$ scope.videoList" сопоставляется с data.items, в которой много видеоэлементов. В моем файле HTML я могу получить идентификатор видео каждого видео с помощью
<ul class="videos">
<li ng-repeat="video in videoList">
<span>{{video.id.videoID}}</span>
</li>
</ul>
и в нем перечислены все идентификаторы видео. Но если я попытаюсь связать эти значения с URL-адресом, например https://youtube.com/embed/, это не сработает.
<div ng-repeat="video in videoList">
<iframe id="ytplayer" type="text/html" width="640" height="360"
ng-src="https://www.youtube.com/embed/{{video.id.videoId}}"
frameborder="0" allowfullscreen></iframe>
</div>
Есть ли способ, которым я могу получить идентификатор videoID для интерполирования в URL-адрес youtube? Я попытался использовать белый список с помощью $sceDelegateProvider следующим образом, но он все еще не работает.
$sceDelegateProvider.resourceUrlWhitelist([
'self',
'https://www.youtube.com/**']);
Любая помощь приветствуется. Спасибо!