Это все в «волшебном» синтаксисе вызова метода:
object.property();
Когда вы получаете свойство из объекта и вызываете его за один раз, объект будет контекстом для метода , Если вы вызываете тот же метод, но в отдельных шагах, контекст представляет собой глобальную область (окно):
var f = object.property;
f();
Когда вы получаете ссылку на метод, он больше не привязан к объекту, это просто ссылка на простую функцию. То же самое происходит, когда вы получаете ссылку на использование в качестве обратного вызова:
this.saveNextLevelData(this.setAll);
Здесь вы привязываете контекст к функции:
this.saveNextLevelData(this.setAll.bind(this));
Если вы используете jQuery вы должны использовать метод $.proxy
, а bind
не поддерживается во всех браузерах:
this.saveNextLevelData($.proxy(this.setAll, this));
Используйте сервер Xbox виртуального фреймбуфера - мы делаем то же самое, чтобы создавать пакеты, требующие X11 для R-сборки в безгласных chroots. Принимая, например, pars Build-Depends from rggobi
:
xvfb xauth xfonts-base
blockquote>После их установки вы можете использовать команду
xvfb-run
. Если вы запустите R через, например,xvfb-run R --no-save
, теперь вы сможете использовать подпрограммы и команды, требующие X11, например. некоторые из графических устройств или инициализация tcl / tk, которая также настаивает на наличии X11.
Тот же трюк полезен для веб-серверов.
Предложение Дирка действительно хорошо работает, если у вас есть контроль над сервером & amp; может запускать xvfb. Если нет, прочитайте ...
в новых версиях R (> = 2.10 и, возможно, раньше), это уже не ошибка, это предупреждение:
> library(tcltk)
Loading Tcl/Tk interface ... done
Warning message:
In fun(libname, pkgname) : no DISPLAY variable so Tk is not available
Теперь вы можете подавить это предупреждение и последующее сообщение загрузки пакета через:
> suppressPackageStartupMessages(suppressWarnings(library(tcltk)))
Часто вы увидите это сообщение из-за загрузки пакета, такого как qvalue
, который зависит от tcltk
; если вы после бесшумной работы, вы должны сначала загрузить tcltk, а затем интересующий пакет:
> suppressPackageStartupMessages(suppressWarnings(library(tcltk)))
> library(qvalue)
Mark
воскрес из-за: http: // dev.list.galaxyproject.org/wrapping-qvalue-in-Galaxy-td4655164.html