Скрипт № и присоединение событий jQuery - PullRequest
1 голос
/ 12 августа 2010

Я использую Script # 0.6 и его недавно добавленную поддержку jQuery, пока что я очень впечатлен.

В C # я прикрепляю обработчик щелчка к кнопке, например

jQuery.Select("#myButton").Click(myHandler);

И он скомпилирован в этот JavaScript

$("#myButton").click(ss.Delegate.create(this, this.myHandler));

Есть ли способ его скомпилировать в

$("#myButton").click(this.myHandler);

Или даже лучше

$("#myButton").click($.proxy(this.myHandler, this));

Я понимаю, что этоэто небольшая проблема, но я бы хотел уменьшить количество ссылок до ss и других зависимостей Script #, так как Script # все еще находится на ранней стадии разработки.

1 Ответ

1 голос
/ 29 августа 2010

Функционально ss.Delegate.create (this, this.myHandler) сильно отличается от this.myHandler.Они обеспечивают разное поведение.Первый сохраняет контекст объекта this, а второй - нет.

Если вашему обработчику не нужен контекст this, то есть в терминах c #, он может быть статическим методом, а затем сделать еготак, и скрипт # выдаст следующее:

$("myButton").click(MyClass.myHandler)

Надеюсь, это поможет.

Нет способа заменить то, что генерируется, но вы можете (если вы действительно хотите) написатьваша собственная версия mscorlib.js или ss.Delegate - компилятору все равно, если ваша реализация соответствует контракту, который она ожидает от сценария времени выполнения.

...