Как я могу получить/отобразить внешний мультимедийный контент из URL-адреса, хранящегося в json файле, с помощью угловых js?
JSON
"media": [
{
"title": "Example_1",
"url": "http://www.w3schools.com/html/mov_bbb.mp4"
},
…….
]
контроллер
controller('Controller', ['$scope','$http', function($scope, $http) {
$http.get('myjson.json').success(function (data){
$scope.medianew = data.media;
});
HTML
<div class="panel-body" ng-repeat = "md in medianew">
<video ng-src="{{md.url}}" width="240" controls></video>
</div>
Я не могу отображать носители из внешних источников. Что я здесь делаю неправильно?
Ваша проблема несколько похожа на эту .
Вам нужно использовать услугу $sce
от углового. Я сделал plnkr, чтобы решить вашу проблему.
.controller('Controller', ['$scope', '$http', '$sce', function($scope, $http, $sce) {
$http.get('myjson.json').success(function (data){
$scope.medianew = data.media.map(function (m) {
m.url = $sce.trustAsResourceUrl(m.url);
return m;
});
}]);
В основном вам нужно проанализировать содержимое json
файла как содержимого json
.
var myApp = angular.module('myApp',[]);
function MyCtrl($scope, $http) {
// parse the string content as json
$scope.mediaNew = JSON.parse('[{"title":"Example_1","url":"http://www.w3schools.com/html/mov_bbb.mp4"}]');
$scope.trustSrc = function(src) {
// trust an insecure url
return $sce.trustAsResourceUrl(src);
};
}
<div ng-controller="MyCtrl">
<div class="panel-body" ng-repeat = "md in mediaNew">
<h1>
{{md.title}}
</h1>
<video ng-src="{{ trustSrc(md.url) }}" width="240" controls></video>
</div>
</div>
Рабочая демонстрация - https://jsfiddle.net/aghosh08/c2d8pwr7/
console.log(data)
?