Как мне получить переменные jquery в agiletoolkit (он же ATK4)? - PullRequest
1 голос
/ 17 сентября 2011

Мне нужно получить высоту и ширину окна браузера с помощью ATK4, облегченного php-фреймворка с jquery

JavaScript, чтобы получить это, будет

 $(window).height();
 $(window).width();

Поскольку agiletoolkit интегрируется с jquery, я думаю, что можно получить его с чем-то вроде

         $height=$p->js()->univ()->_selectorWindow()->height();

, но это не работает, вместо этого, когда я передаю переменную $ height, которая будет использоваться, в источнике HTMLя получаю следующее.

 'height':$(window).univ().height(),'width':$(window).univ().width()

и элемент вообще не отображается

Я хочу иметь возможность вызвать jqplot, чтобы установить ширину графика на всю ширину пользователейбраузер на определенной странице.Чтобы сделать это, мне нужно передать параметр, который является шириной: NNN, где NNN - это количество пикселей в ширину.Насколько я знаю, jqplot не поддерживает параметр в процентах, поэтому я не могу сказать, ширина: 100%.Кроме того, если я устанавливаю div на странице и добавляю график, он также игнорирует размер div и создает небольшой график размером 400 x 300 пикселей.

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

Может кто-нибудь предложить правильный синтаксис для получения этих значений?ТИА.

1 Ответ

2 голосов
/ 17 сентября 2011

вы должны понимать, что "$ p-> js () -> _ selectorWindow () -> height ();"будет фактически переведено как "$ (window) .height ();"- но вы можете получить ширину окна ТОЛЬКО на стороне клиента.

, поэтому, если вы хотите получить высоту окна в вашем коде, вы можете сделать это только с помощью ajax-запроса, куда отправляется фактическая высотавернитесь с внешнего интерфейса.

перефразируйте ваш вопрос, чтобы было понятно, для чего вам нужен рост, поэтому я могу предложить лучший способ сделать это.


пример того, как получить бэкэнди связанный интерфейс:

вставьте это в page / test.php и откройте http://example/test, чтобы увидеть в действии

class page_test extends Page {
    function init(){
        parent::init();

        $b=$this->add("Button");
        $b->set("Get Width");
        $b->js("click")->univ()->ajaxec($this->api->getDestinationURL(), array("width" => $this->js(true)->_selectorWindow()->width()));
        $v=$this->add("View_HtmlElement")->setElement("div")->set("Click button to get width of the window");
        if ($w = $_POST["width"]){
            $v->js(null, $v->js()->html("Width: " . $w))->univ()->alert("Width: " . $w)->execute();
        }
    }
}
...