javascript - 使用 Angular JS 时如何在 ng-repeat 内的 img 标签中显示图像?

标签 javascript html angularjs angularjs-scope angularjs-ng-repeat

我的问题:

我想使用 ng-repeat 指令显示存储在本地的图像列表,但图像没有显示。

AngularJS 版本:1.2.22

代码:

  • 目录结构:

    myapp/
      |--- common/
      |    |--- images/
      |         |--- image.png
      |
      |--- subapp1/
      |    |--- index.html
      |    |--- subapp1.js
      |    |
      |    |--- controllers/
      |    |    |--- SubApp1Controller.js
      |    |
      |    |--- views/
      |    |    |--- 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>
  • 子应用1.js
// 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"});
});
  • SubApp1Controller.js
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();
}
  • imageListView.html
<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 Inspector 工具查看 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。

关于javascript - 使用 Angular JS 时如何在 ng-repeat 内的 img 标签中显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25432730/

相关文章:

javascript - 如何将元素移动到另一个元素然后自动完成一些div

html - 防止 Apache 缓存 html5 list

javascript - AngularJs 用户身份验证仅发生在第二次交互时

unit-testing - 如何在 angularjs 中使用自定义 dom 事件进行测试

javascript - Node , Angular 错误 : ENOENT: no such file or directory

javascript - 使用下拉菜单按名称排序

javascript - 如何从 AngularJS 获取响应 $http.get().then()

javascript - 加载时淡入图像

javascript - knockout 复选框启用依赖项

Jquery 切换添加 z-index