Я пытаюсь написать собственный виджет, и я хочу использовать существующие виджеты пользовательского интерфейса в классе, который я пишу. Проблема в том, что при вызове события метод класса, который вызывается, выходит из области видимости из остальной части класса, так как любые члены, которые я пытаюсь прочитать, не определены. Вот код:JQuery Widget События в объекте Ориентированный Javascript
<script type="text/javascript">
MyClass = function()
{
this.init();
}
$.extend(MyClass.prototype,
{
init: function()
{
this.field = 'Hello world.';
/* Let's try using a slider. */
this.slider = $("#slider");
this.slider.slider(
{
change: this.callback,
min: 270,
max: 800,
slide: this.callback
}
);
},
callback: function()
{
alert(this.field);
}
}
);
</script>
<div id="slider"></div>
<script type="text/javascript">
var myClass = new MyClass();
</script>
Это упрощение задачи, и я попробовал несколько способов обойти это, например, с помощью bind
вместо обратного вызова нотации:
this.slider.bind('slidechange', this.callback(this));
this.slider.bind('slide', this.callback(this));
Однако , это просто приводит к обратному вызову, несмотря на происходящее событие.
Спасибо.
Спасибо за пример Джонатана, это работает. Артем, я не выполняю обратный вызов(), применяю (этот) подход. Где мне нужно делать то, что вы предлагаете? –