2

我在 TypeScript 应用程序中使用 jQuery UI 滑块,使用 TypeScript 0.9 和jqueryui.d.ts从definitelyTyped 下载的最新定义文件:

/// <reference path="jquery/jquery.d.ts" />
/// <reference path="jqueryui/jqueryui.d.ts" />

. . .

$("#sideRestitution").slider({
  min: 0.0,
  max: 1.0,
  step: 0.01,
  value: game.sideRestitution,
  change: (event, ui) => {
    game.sideRestitution = ui.value;
  }
});

它工作正常,但我无法弄清楚如何以“类型”的方式使用小部件:在上面的代码change中是 type anyjqueryui.d.ts定义了一个Slider带有特定于滑块小部件的事件和方法的接口,但唯一返回此类接口的方法或属性是 global $.ui.slider

如何访问/使用Slider我创建的滑块小部件的界面?

的用途/目的是$.ui.slider什么?

4

2 回答 2

1

您还需要包含jquery.d.ts以访问和操作类型化的 jQuery 对象。这将允许您以典型的 jQuery 方式访问您的滑块。例如:

/* Initialize slider with ID 'my_slider'. */
$("#my_slider").slider({
    min: 0,
    max: 100,
    value: 0,
    change: (event: Event, ui) => {   
        /* Update as desired. */
    }
});

在这个例子中,类型$('#my_slider')定义在 中jquery.d.ts,所有相关的滑块函数等都定义在 中jqueryui.d.ts

只是为了完成示例,在您的 HTML 中,您将需要以下内容:

<div id="my_slider"></div>

编辑:我认为这是一个错误。即使有以下情况:

var my_slider : JQueryUI.Slider = $('#my_slider').slider;
my_slider.slide({
  ...
})

它仍然没有为slide.

这是一个hack-ish修复。将SliderUIParams接口(第 442 行jqueryui.d.ts)替换为实际接口:

interface SliderUIParams {
  value: number;
  values?: number[];
  handle: JQuery;
}

然后,在您的滑块调用中,静态输入您的参数,例如:

slide: (event: Event, ui: JQueryUI.SliderUIParams) => {
  ...
}
于 2013-08-01T17:44:03.783 回答
1

在当前版本中jqueryui.d.ts,无法以“类型化”的方式定义小部件事件。

globals$.ui.slider$.ui.accordion用作定义新小部件的基础 - 例如:

$.widget("ui.myslider", $.ui.slider, { . . . });

创建一个myslider扩展内置滑块小部件的新小部件。这些全局变量也用于访问每个小部件的原型,例如修改它们的默认选项:

$.ui.slider.prototyp.options.min = -100;

将所有滑块的默认最小值修改为-100.

这些全局变量的定义jqueryui.d.ts似乎是错误的:它没有定义prototype而是定义了许多其他成员 - 就​​像所有选项一样 - 实际上不存在。

于 2013-08-08T15:43:21.460 回答