2016-09-17 12 views
0

私はJSONからビデオ名を読み込み、<video>タグのソースにそれを印刷しようとしています。しかし、ページをロードすると、ビデオは空白のままで、コンソールにはhttp://www.url.com/gallery/video/undefinedと表示されますが、「検査」すれば正しいURLが印刷されます...なぜですか?AngularJSは私にビデオURLを与えません

<html xmlns="http://www.w3.org/1999/xhtml" ng-app="mediaReproductionApp"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>Principale</title> 
    <script src="js/angular.js"></script> 
    <script src="js/angular_read_media.js"></script> 
</head> 
<body ng-controller="MediaReproductionCtrl"> 
    <div class="media_player"> 
     <video preload="metadata" ng-hide="reproductionCodeIsEmpty(item.items[0].media) == true" controls> 
      <source src="{{playVideo(item.items[0].media)}}" type="video/webm" /> 
     </video> 
    </div> 
</body> 
</html> 

そして、これはスクリプトです:
これは、HTMLコードで

var model = {}; 

var mediaReproductionApp = angular.module("mediaReproductionApp",[]); 

mediaReproductionApp.run(function ($http) { 
    $http.get("movimenti_per_totem.json").success(function (data) { 
     model.items = data; 
    }); 
}); 

mediaReproductionApp.controller("MediaReproductionCtrl", function($scope) { 
    $scope.item = model; 

    $scope.playVideo = function(media) { 
    return "../gallery/video/" + media; 
    } 

    $scope.reproductionCodeIsEmpty = function(media) { 
    return media == ""; 
    } 

}); 
+1

コンパイルされていないURLの不正なリクエストを防ぐには、必ず「ng-src」を使用してください。ブラウザが 'src'を実行するときに角をコンパイルするのを知らない – charlietfl

+0

' $ http'が完了するまで 'media'はあなたの関数で定義されていません – charlietfl

+0

@charlietflそう、私は何をすべきですか? – ProtoTyPus

答えて

1

あなたの機能$scope.playVideo()は、データが今までmediaが最初undefinedになりますので、到着している前に呼び出さ取得する予定です。

ng-srcを使用し、mediaが定義されるまで文字列を返さないようにしてください。この理由は、補間値があるとき

$scope.playVideo = function(media) { 
    return media ? "../gallery/video/" + media : null; 
} 

<source ng-src="{{playVideo(item.items[0].media)}}" type="video/webm" /> 

ng-src要素にsrcを設定しません、代わりにこのようなもののためにビューの機能を使用して、ビューで使用されるスコープモデルのプロパティを定義しないことをお勧めします偽装

+0

これは次のように出力されます: しかし、今は私のコマンドを示していますが、ビデオはまだありません... – ProtoTyPus

+0

は、ページとルートのURLとの関係で正しいパスですか? – charlietfl

+0

よろしくお願いします。iFrameでそれが動作することを発見しました:/ \t \t