私の問題:
Ng-repeatディレクティブを使用して、ローカルに保存された画像のリストを表示したいのですが、画像が表示されません。
AngularJSバージョン:1.2.22
コード:
ディレクトリ構造:
myapp / | --- common / | | ---画像/ | | --- image.png | | --- subapp1 / | | --- index.html | | --- subapp1.js | | | | ---コントローラー/ | | | --- SubApp1Controller.js | | | | ---ビュー/ | | | --- imageListView.html
index.html
<!DOCTYPE html>
<html lang="en" data-ng-app="SubApp1">
<head>
<meta charset="utf-8" />
</head>
<body>
<div id="page" data-ng-view="">
</div>
<!-- Include required libs, models and controllers -->
<script type="text/javascript" src="../common/libs/angular.min.js"></script>
<script type="text/javascript" src="../common/libs/angular-route.min.js"></script>
<script type="text/javascript" src="../common/libs/angular-touch.min.js"></script>
<!-- Controllers -->
<script type="text/javascript" src="controllers/SubApp1Controller.js"></script>
<!-- App Module (main) -->
<script type="text/javascript" src="subapp1.js"></script>
</body>
</html>
// Instantiate the SubApp1 Module.
var subApp1 = angular.module("SubApp1", ["ngRoute", "ngTouch"]);
// Setting Controllers
subApp1.controller("SubApp1Controller",
["$scope", SubApp1Controller]
);
// Define the routes for the module.
subApp1.config(function ($routeProvider) {
$routeProvider.when("/home", {
controller: "SubApp1Controller",
templateUrl: "views/imageListView.html"
});
$routeProvider.otherwise({redirectTo: "/home"});
});
function SubApp1Controller($scope)
{
/**
* Private Method: _run()
* The main function of the SubApp1Controller, where all the magic
* happens.
*/
function _run() {
// this variable will define which style will be loaded on the image list view
$scope.section = "subapp1";
var imageSource;
imageSource = "../common/images/image.png";
// list of media elements to be displayed on the list
$scope.mediaList = [
{
thumbnailPath: imageSource,
imagePath: imageSource,
},
{
thumbnailPath: imageSource,
imagePath: imageSource,
},
{
thumbnailPath: imageSource,
imagePath: imageSource,
},
{
thumbnailPath: imageSource,
imagePath: imageSource,
},
{
thumbnailPath: imageSource,
imagePath: imageSource,
},
];
};
// Runs the main method of this class
_run();
}
<div class="grid-background"></div>
<header class="grid-header {{section}}">
<div class="button-right"></div>
</header>
<ul id="grid" class="grid">
<li class="grid-item" data-ng-repeat="media in mediaList">
<img data-ng-src="{{media.thumbnailPath}}" data-src="{{media.imagePath}}"/>
</li>
</ul>
追加情報:
画像が読み込まれておらず、コンソールにエラーメッセージが出力されていません。
Webインスペクターツールを開いてli要素で何が処理されたかを確認しましたが、src属性がありませんでした。以下を参照してください。
<li class="grid-item ng-scope" data-ng-repeat="media in mediaList">
<img data-ng-src="../common/images/image.png" data-src="../common/images/image.png" />
</li>
Img要素にsrc属性を追加するとロードされますが、エラーが発生します。以下を参照してください:
<li class="grid-item" data-ng-repeat="media in mediaList">
<img data-ng-src="{{media.thumbnailPath}}"
data-src="{{media.imagePath}}"
src="{{media.thumbnailPath}}"
/>
</li>
<!-- Error message printed in the console -->
GET file:///[ABS_PATH]/%7B%7Bmedia.thumbnailPath%7D%7D net::ERR_FILE_NOT_FOUND
同様の問題に関する多くの投稿と質問/回答を読みましたが、どれもうまくいきませんでした。誰か手がかりはありますか?
前もって感謝します。
IMGタグとAngularJSの場合は、ng-src属性のみを使用します。
<img ng-src="{{media.imagePath}}" />
{{media.imagePath}}には、絶対または相対の画像へのURLを含める必要があります。