在AngularJS中获取图像位置(x;y)

Posted

技术标签:

【中文标题】在AngularJS中获取图像位置(x;y)【英文标题】:Get image position(x;y) in AngularJS 【发布时间】:2017-06-25 22:38:49 【问题描述】:

我正在尝试在我的 file.js 端获取图像的位置(x;y),这是我到现在为止的结果:

红色圆圈中是我的可拖动图像,如您所见,我能够获得位置,但是一旦我尝试在角度侧传递此值,它们就会显示为未定义。

这是我的代码:

html端:

 <div ng-show="visible1" style="display: block;left: 20px;">

    Nom:<input ng-model="nameW" required></br>
    lieu: <input ng-model="locName" required></br>
    x:<div id="posX" ng-model="locX" ></div></br>
    x:<input   id="posXinput" ng-model="locXI" ></input></br>
    y:<div id="posY" ng-model="locY" ></div></br>
    y:<input  id="posYinput"   ng-model="locYI" ></input></br>
    <button ng-click="update(nameW,locName,locXI,locYI)">Valider</button>

</div>
</div >
<div style="bottom: 30px;left: 30px;position: absolute;">

<img src="pages/resources/img/téléchargement.jpg" draggable="true"   id="draggable" class="ui-widget-content" style="max-height: 20px;position: absolute;">

<img id="box" src="pages/resources/img/skyrim-map-by-mottis86-lg.jpg" style="max-width: 50%">
</div>
</div>

<script type="text/javascript" >

     $(function() 
    $("#draggable").draggable(
        containment: "#box",
        scroll: false,
        drag: function(event) 
            var top = $(this).position().top;
            var left = $(this).position().left;

            $('#posX').text(left);
            $('#posXinput').val(left);
            $('#posY').text(top);
            $('#posYinput').val(top);
        
    );
);
</script>

在我的js端:

 $scope.update = function (name,locName,locX,locY) 

        console.info(name,locName,locX,locY);

    ;

我得到的是:"u" "u" undefined undefined

我希望有人可以帮助我。

对不起,我的英语不是我的母语。

【问题讨论】:

【参考方案1】:

您可以在 Angular js 文件中移动您的函数并在范围内赋值

    $scope.update = function (name, locName, locX, locY) 
        console.info(name, locName, locX, locY);
    ;
    $(function () 
        $("#draggable").draggable(
           containment: "#box",
           scroll: false,
           drag: function (event) 
               var top = $(this).position().top;
               var left = $(this).position().left;        
               $('#posX').text(left);
               $scope.locXI = left;
               $('#posY').text(top);
               $scope.locYI = top;
           
       );
   );

你也可以在 JavaScript 中使用角度范围,而无需像这样移动到角度文件

$(function () 
    $("#draggable").draggable(
        containment: "#box",
        scroll: false,
        drag: function (event) 
            var top = $(this).position().top;
            var left = $(this).position().left;

            $('#posX').text(left);
            $('#posXinput').val(left).change();
            var scope = angular.element($("#posXinput")).scope();
            scope.$apply(function()
                scope.locXI = left;
            );
            $('#posY').text(top);
            $('#posYinput').val(top).change();
            var scope = angular.element($("#posYinput")).scope();
            scope.$apply(function()
                scope.locYI = top;
            );
        
    );
);

【讨论】:

感谢您这么快回答,如果我直接使用 $scope.locXI 和 $scope.locYI 就可以了:console.info(name,locName, $scope.locXI,$scope.locYI);

以上是关于在AngularJS中获取图像位置(x;y)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用zbar在图像上获取检测到的QR码的x,y位置?

在AngularJS中的滚动事件上获取鼠标位置

在AngularJS中的滚动事件上获取鼠标位置

获取背景图像位置(x y和单位)

从 2d 图像像素获取 3d 坐标系中的 x,y

Android:MotionEvent 的 x 和 y 像素不会转换为图像坐标