【问题标题】:Firing callback every x milliseconds during drag event (HTML5, Ember)在拖动事件期间每 x 毫秒触发一次回调(HTML5,Ember)
【发布时间】:2013-10-18 14:42:06
【问题描述】:

我有一个 Mixin:

DragEvents = Ember.Mixin.create( {
    attributeBindings: 'draggable',
    draggable: 'true',
    dragStart: function(event) {
        controller.onDragStartEvent(this);
    },
    drag: function(event) {
        // this is called for each 'movement' of the object being dragged
        // want to collect information about the events and fire a callback
        // once every 100 ms
    },
    dragEnd: function(event) {
        // want to fire one last callback with the remaining drag event coordinates
    }
});

在拖动功能中,我对鼠标的坐标感兴趣,它由下式给出

event.originalEvent.pageX, event.originalEvent.pageY

我不知道如何在每次调用拖动时收集该信息,并在拖动期间每 100 毫秒触发一次回调,参数是我收集的坐标数组。当调用 dragEnd 函数时,我想用剩余的拖动事件(那些已收集但未在之前的回调中发送的事件)触发回调。

回调是

controller.onDragEvent(coordinatesArray);

【问题讨论】:

    标签: javascript html ember.js


    【解决方案1】:

    ember run 有自己的小跑

    http://emberjs.com/api/classes/Ember.run.html#method_throttle

    确保目标方法的调用频率永远不会超过指定的间隔时间。

    在您的情况下,代码将是

    Ember.run.throttle(controller, 'onDragEvent',coordinatesArray, 100);
    

    祝你好运

    【讨论】:

    • 这看起来像我想要的,但是当我尝试它时,我得到“对象函数没有方法'throttle'”
    • 你应该把代码放在drag:函数中,对于错误我有一个问题,你如何设置控制器变量
    • controller = Em.Object.create( {onDragEvent:function(coordinates){}});创建
    • 你能提供一个JSfiddle吗?
    • 如果您可以编辑问题并提供更完整的代码,我可以看到问题出在哪里...
    【解决方案2】:

    如果你想每 100 毫秒调用一次函数,你可以使用 JQuery 和 queue 函数来连接函数调用:http://api.jquery.com/jQuery.queue/

    如果你不懂JQuery,它很容易上手。按照以下说明操作:http://jquery.com/download/,您就可以使用 queue 功能了。一个例子是:

    yourFunction() {
       $( "span" ).text( any );
       setTimeout( showIt, 100 );
      .queue(function(sig){
       yourFunction();
       sig();
      })
    }
    

    请记住,在 JQuery 中,您可以使用这些符号 $("#id")$(".class") 来引用一个标签或一组标签。

    【讨论】:

    • 每次调用 drag 时仍然会调用它,只是延迟调用它。我只需要每 100 毫秒调用一次。
    • 我是所有 javascript 的新手 (:
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 2013-09-27
    • 2018-02-26
    相关资源
    最近更新 更多