如何通过拖动来调整图片大小

6

我有一张图片,需要通过拖动其角来调整大小,在angularjs中有哪些选项可以实现这个功能?

目前,我正在手动调整图片大小,像这样:

<img src="~/Content/images/login-logo.png" width="{{image.width}}" height="{{image.size}}"/>
<div class="right-wrapper">
  <h3 class="right-head">Appearance <img src="~/Content/images/info-icon.png"></h3>
  <div ng-if="isImage">
      <div ng-class="form-group">
          size
          <input class="form-control" type="textbox" ng-model="image.size" />
      </div>
      <div ng-class="form-group">
          width
          <input class="form-control" type="textbox" ng-model="image.width" />
      </div>
  </div>
</div>

但我想通过拖动它的角来调整大小。

2个回答

8
希望这个 Angular 指令能够帮到您。

(function () {
  'use strict';

  angular.module('myApp', [])

  .directive('resizable', function () {

    return {
        restrict: 'A',
        scope: {
            callback: '&onResize'
        },
        link: function postLink(scope, elem, attrs) {
            elem.resizable({handles: "all"});
            elem.on('resize', function (evt, ui) {
              scope.$apply(function() {
                if (scope.callback) { 
                  scope.callback({$evt: evt, $ui: ui }); 
                }                
              })
            });
        }
    };
  })


  .controller('MainCtrl', function ($scope) {

    $scope.resize = function(evt,ui) {
      //console.log (evt,ui);
      $scope.w = ui.size.width;
      $scope.h = ui.size.height;
    }

  });

})();
<head>
  <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
  <link rel="stylesheet" href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
  <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  <script src="//code.jquery.com/ui/1.11.2/jquery-ui.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.min.js"></script>
</head>

<body class="jumbotron" ng-controller="MainCtrl" ng-app="myApp">
 
  <h2>Resizable directive in AngularJS and jQueryUI</h2>
  <p>Drag the cursor to resize</p>
  
  <img src="http://dummyimage.com/600x400/fff/000" resizable on-resize="resize($evt, $ui)" width="200" height="200" />
 <div ng-show="w">{{w}}:{{h}}px</div>
</body>


谢谢,但它应该能够从每个角落调整大小。 - Syed Rasheed
你只需要添加 elem.resizable({handles: "all"}) 来使其在所有角落可调整大小。更新了代码片段。 - Narendra CM

2

这解决了我的问题。

可调整大小:

<div ngResizable > I am resizable </div>

如果您愿意,可以同时使用两个指令:(可调整大小和可拖动)

<div ngDraggable ngResizable> I'm now draggable and resizable </div>

使用下面的链接,您将找到更多详细信息。 angular2-draggable

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接