【问题标题】:Event Jquery UI in dart飞镖中的事件 Jquery UI
【发布时间】:2014-08-29 14:18:40
【问题描述】:

我正在尝试在 Jquery Ui 元素的侦听器函数中获取 Event 对象。 我实际上是用 dart 语言编程并使用 js 包 (dart:js) 这是一个例子:

Example.html:

<script async type="application/dart" src="Example.dart"></script>
<script async src="packages/browser/dart.js"></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.1/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.1/jquery-ui.js"></script>

<div id="container">
  <canvas id="stage" width="500px" height="500px"></canvas>
</div>
<div id="menu">
  <button id="btnImport">Button Import</button>
  <div id="slider-1"></div>
</div>

Example.dart:

import 'dart:html';
import 'dart:js' as js;

void main() {
  js.JsObject slider_1 = js.context.callMethod("\$", ['#slider-1']);
  slider_1.callMethod('slider');
  slider_1.callMethod("on",["slidechange",_onSliderChange]);
}

void _onSliderChange(js.JsObject obj1,js.JsObject obj2) {

}

如何在 _onSliderChange 函数中检索 slidechange 事件的事件对象? JsOjbect 并没有真正帮助我...... 类型

【问题讨论】:

  • 我只是研究一下普通事件监听器的反应。我习惯于在函数监听器中接收 Event 对象并使用它。在您的回答中,我的调试器从不转到“var event..”行。侦听器似乎没有仅使用 querySelector 进行初始化。我将使用 Jquery UI 元素并在 dart 中使用它。
  • 您能否提供您正在使用的 jquery-ui 元素 API 文档的链接?如果是 api.jqueryui.com/slider,它不会触发 slidechange 事件。也许您想改为收听change 事件。
  • 我刚试过你的代码,当我移动旋钮时会调用_onSliderChange
  • 但是你可以检索事件对象吗?
  • 你想从事件对象中得到什么信息?我得到了一个传递的值,但我不知道要检查什么。

标签: jquery jquery-ui dart dart-html dart-js-interop


【解决方案1】:

如果我理解正确,您无法检索事件本身,而只能检索 jquery 事件的 js 版本(不是本机 dom 事件),因此您需要知道根据 @ 中的文档读取所需属性的外观987654321@

void _onSliderChange(js.JsObject obj1, js.JsObject obj2) {
  print(obj1['target']); // <= get the div
  print(obj2['value']);  // <= get the value
}

当您移动滑块时,应该会显示类似

div (:1)
5 (:1)

正如你所说,有时很难处理/调试 JsObject,所以我写了一些帮助程序来将此类对象转换为 dart 集合(列表或映射)以进行调试https://github.com/alextekartik/tekartik_utils.dart/blob/master/lib/src/js_utils/jsobject_converter.dart

void _onSliderChange(js.JsObject obj1,js.JsObject obj2) {
  print(jsObjectKeys(obj1));
  print(jsObjectAsCollection(obj1));
}

应该显示类似的东西

[originalEvent, type, isDefaultPrevented, timeStamp, jQuery110207535289276856929, target, toElement, screenY, screenX, pageY, pageX, offsetY, offsetX, fromElement, clientY, clientX, buttons, button, which, view, shiftKey, relatedTarget, metaKey, eventPhase, currentTarget, ctrlKey, cancelable, bubbles, altKey, delegateTarget, handleObj, data, isTrigger, namespace, namespace_re, result] (:1)
{originalEvent: {originalEvent: Instance of 'MouseEvent', type: mouseup, isDefaultPrevented: {}, timeStamp: 1409328507659, jQuery110207535289276856929: true, toElement: span, screenY: 624, screenX: 115, pageY: 545, pageX: 110, offsetY: 16, offsetX: 15, fromElement: null, clientY: 545, clientX: 110, buttons: null, button: 0, which: 1, view: <window>, target: span, shiftKey: false, relatedTarget: null, metaKey: false, eventPhase: 3, currentTarget: Instance of 'HtmlDocument', ctrlKey: false, cancelable: true, bubbles: true, altKey: false, delegateTarget: Instance of 'HtmlDocument', handleObj: {type: mouseup, origType: mouseup, data: null, handler: {guid: 23}, guid: 23, selector: null, needsContext: null, namespace: slider}, data: null}, type: slidechange, isDefaultPrevented: {}, timeStamp: 1409328507659, jQuery110207535289276856929: true, target: div, toElement: span, screenY: 624, screenX: 115, pageY: 545, pageX: 110, offsetY: 16, offsetX: 15, fromElement: null, clientY: 545, clientX: 110, buttons: null, button: 0, which: 1, view: <window>, shiftKey: false, relatedTarget: null, metaKey: false, eventPhase: 3, currentTarget: div, ctrlKey: false, cancelable: true, bubbles: true, altKey: false, delegateTarget: div, handleObj: {type: slidechange, origType: slidechange, data: null, handler: {guid: 17}, guid: 17, selector: null, needsContext: null, namespace: }, data: null, isTrigger: 3, namespace: , namespace_re: null, result: null} (:1)

您可能会从活动中找到您想要的房产

【讨论】:

  • 完美!很简单 !我会尽快尝试你的对象助手。感谢您的帮助和 Günter Zöchbauer,也感谢您。
猜你喜欢
  • 2015-08-15
  • 2014-06-07
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2019-05-14
  • 2019-03-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多