image - 使用 Angular http.get 调用异步加载图像

标签 image angularjs asynchronous flask http-get

这可能有点新奇,但我真的不知道如何解决这个问题。

在被 Angular $http.get 调用调用后,谁能推荐我一种从 flask 后端传递和图像的方法?

我正在尝试做的事情的简短示例。

//javascript code
myApp.controller('MyCtrl', function($scope, $http){
    $http.get('/get_image/').success(function(data){
        $scope.image = data;
    });
});

#flask back end
@app.route('/get_image/', methods= ['GET', 'POST'])
def serve_image():
    image_binary = get_image_binary()   #returns a .png in raw bytes
    return image_binary

<!-- html -->
<html ng-app= "myApp">
    <div ng-controller= "MyCtrl">
        {{ image }}
    </div>
</html>

如您所见,我正在尝试从 flask 后端向前端提供原始字节的 .png 图像。

我试过这样的东西
<html>
    <img src= "/get_image/">
</html>

但问题是,“get_image_binary”需要一段时间才能运行,并且页面在图像准备好之前加载。我希望图像仅在准备好时才异步加载到页面。

再说一次,我确信有很多方法可以做到这一点,可能是 Angular 本身内置的东西,但很难将它用谷歌搜索来表达。

最佳答案

不能说 flask 的东西,但下面是一些 AngularJS 代码。

在 Angular 操作 DOM 并且浏览器呈现 ( AngularJS : $evalAsync vs $timeout ) 之前,该指令不会替换 source 属性。

HTML:

<div ng-controller="MyController">
   <img lazy-load ll-src="http://i.imgur.com/WwPPm0p.jpg" />
</div>

JS:
angular.module('myApp', [])
.controller('MyController', function($scope) {})
.directive('lazyLoad', function($timeout) {
    return {
        restrict:'A',
        scope: {},
        link: function(scope, elem, attrs) {
            $timeout(function(){ elem.attr('src', attrs.llSrc) });
        },
    }
});

工作中的相同代码 JSFiddle

关于image - 使用 Angular http.get 调用异步加载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23253050/

相关文章:

java - 如何在图像周围创建边框而不是在 JLabel 周围创建边框?

javascript - Angular ui 路由器 : get $state info of toState in resolve

android - 改造链接可观察对象

c# - 异步asyncawait方法生成pdf

angularjs - 如何在 Jasmine 中重现 "10 $digest() iterations reached. Aborting"错误

Python 在 Popen.stdout.readline 上设置超时

ios - 尝试将来自 Web API 的照片添加到表中的各个行

javascript : calculating and returning values after Image loaded

c++ - OpenCv 3.3 Cuda Medianfilter 生成 2/3 的图像黑色

angularjs - 使用 RequireJS 延迟加载 AngularJS 模块