在 angular.js 中以实际大小显示图像

2024-04-01

我需要以实际大小显示图像,即使它比其容器大。我尝试了使用 Image 变量的技巧和捕获负载大小 https://stackoverflow.com/a/7686392/196451像这样的东西:

HTML:

<div ng-controller="MyCtrl">
    <input ng-model="imageurl" type="url" />
    <button ng-click="loadimage()" type="button">Load Image</button>
    <img ng-src="{{image.path}}"
        style="width: {{image.width}}px; height: {{image.height}}px" />
</div>

JavaScript:

.controller("MyCtrl", ["$scope", function ($scope) {
    $scope.image = {
        path: "",
        width: 0,
        height: 0
    }
    $scope.loadimage = function () {
        var img = new Image();
        img.onload = function () {
            $scope.image.width = img.width;
            $scope.image.height = img.height;
            $scope.image.path = $scope.imageurl;
        }
        img.src = $scope.imageurl;
    }
}]);

该脚本可以工作,但只有在图像很大的情况下单击按钮几次后才能工作。

我应该怎么做才能使其一键运行?

还有比这更好的方法来发现图像大小吗?


你需要使用$scope.$apply http://docs.angularjs.org/api/ng.%24rootScope.Scope#%24apply,否则任何更改$scope在非 Angular 事件处理程序中创建的事件将无法正确处理:

img.onload = function () {
  $scope.$apply(function() {
    $scope.image.width = img.width;
    $scope.image.height = img.height;
    $scope.image.path = $scope.imageurl;
  });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 angular.js 中以实际大小显示图像 的相关文章

  • 在 for 循环中突破 Promise 块

    我有以下代码 this storeNameValidate function stores var deferred q defer console log stores for storeIndex in stores this name
  • 如何触发UI-Router View Load事件?

    第一次测试 ui router 但目前测试事件 我似乎无法理解如何触发 viewContentLoaded 或 Loading 虽然 我已经有 stageChangeSuccess 等工作了 我只是把一切都推到了http punkbit c
  • 有效使用 Angular Promise 和 Defers

    在 Angular 以及所有 SPA JS 框架 中 假设页面导航对于用户来说非常快速且 无缝 此速度的唯一瓶颈是使用 API 调用从我们的服务器检索数据 因此 寻找一种解决方案似乎是合理的 在该解决方案中 我们可以在等待 API 调用获得
  • AngularJS,使用没有后退按钮刷新的路由

    我在用着angularJS使用 AJAX 构建一个简单的单页应用程序 但是当用户使用本机后退按钮时我遇到了问题 angular module myApp ionic myApp controllers myApp services conf
  • 使用 Angular JS ng-src 的后备(默认)图像

    我正在尝试使用从模式返回的数据设置图像源 这是在 ng repeat 循环内 div div span table tr td class imgContainer img td tr table span div div
  • 在 AngularJS 中将数组绑定到指令变量

    我正在尝试将数组放入模板中 以便我可以使用其中的各个值 我的问题是 该属性一旦进入我的模板就会变成字符串 因此它不再可以作为 var 0 访问 而是返回 字符串 的第一个字符 通常是 这是数据的简化设置 varForward 100 1 v
  • 添加甜蜜警报 Angular js

    我是 AngularJS 的新手 我正在尝试使用来自https github com oitozero ngSweetAlert https github com oitozero ngSweetAlert 我已经将相应的脚本添加到我的in
  • 在模态中打开模态

    我有一个有角度的 ui 模态 其中有一个按钮 单击此按钮时 我想在 Angular ui 中打开另一个模式 我该怎么做 scope open function var modalInstance modal open templateUrl
  • 将行推入使用 ng-repeat 以角度呈现的表格中

    当客户端单击该行时 我想在表中插入额外的行 不应预取数据 因为我预计最多有 30 行 但每行都有关联的数据 在一次获取中获取这些数据是不合理的 到目前为止 我的方法是使用 ng repeat 迭代我的集合并渲染表格 当客户端按下该行时 客户
  • 使用 Phaser.js 和 Ionic 开发游戏应用程序(渲染缓慢/不稳定)

    只是为了让您知道 以防有人想要开发 我使用 Phaser js 开发了一个游戏应用程序 我将代码放入 Ionic 空白启动应用程序中 所以基本上视图是使用 Ionic 应用程序渲染的 然后 Phaser 通过 id 选取 div 并显示游戏
  • 在 History popstate 事件中获取 AngularJs $scope?

    我是 angularjs 开发新手 我有 var app angular module myapp app controller ProductCtrl scope sce function scope sce scope products
  • AngularJs 数据绑定不适用于 ionic

    我觉得我在离子输入文本中遗漏了一些明显的东西 我在用angular ui router这条路线 stateProvider state findPersons url findPersons templateUrl html findPer
  • CORS 在 jquery 中工作正常,但在 angularjs 中不行

    我的服务器端是php mysql 我正在另一个域的 Web 服务中进行 Ajax 调用 其中启用了 的访问控制 var postUrl http logical brains com elance clone test login php
  • $exceptionHandler 中的 $location - 依赖冲突

    我正在尝试实现一个非常标准的任务 当发生异常时 重定向到我的 error page 代码的简化形式如下所示 app factory exceptionHandler location function location return fun
  • $resource.query 返回分割字符串(字符数组)而不是字符串

    我正在使用像下面这样的 Angular resource angular module app factory data function resource var Con resource api data update method P
  • 仅当显式选择行时才关闭 ui-bootstrap typeahead

    我创建了这个jsBin http jsbin com livuqafe 2 edit来证明我遇到的问题 如果您转到此处 请尝试输入 五 并继续 你的自然反应是输入 五 然后按 Tab 如果你想要 五百 你可以向下箭头一次 但是 在这种情况下
  • Protractor+AngularJS+Jasmine - 测试按住项目

    AngularJS 和 Protractor 非常新 但我认为到目前为止我正在朝着正确的方向前进 我的网站有一个项目列表 当您单击该项目并按住 X 秒时 它会打开一个模式窗口 我如何在 Protractor Jasmine 中模拟这种行为
  • Angular - 如何从 DOM 中删除我使用过 $compile 的元素?

    我需要的是两个 ng views 的功能 因为我不能 我想更改某些内容的innerHTML 并编译它 我遇到的问题是 当我再次更改内容时 我可以编译 但是 Angular 是否会自行删除绑定 或者我必须手动执行此操作 如果是这样 怎么办 编
  • AngularJS:Array.prototype.find() 在 Chrome 中不起作用

    我遇到一个问题 我的角度代码可以在 Firefox 中工作 但不能在 Chrome 中工作 浏览器控制台打印如下 TypeError undefined is not a function at setSelectedColor http
  • Chrome 中的性能问题

    我目前正在从事一个相对较大的项目 使用 AngularJs 构建 应用程序的一部分是一个表单 您可以向其中添加任意数量的页面 不幸的是 添加了很多不必要的垃圾 即表示表单模型的对象可能会变得非常大 在某些时候 Chrome 基本上无法处理它

随机推荐