Как я должен вызвать функцию JavaScript в представлении Kohana? - PullRequest
0 голосов
/ 09 февраля 2011

У меня простой просмотр коханы и JavaScript, который делает обратный отсчет 30 минут.Я поместил файл javascript в каталог / media m, и его имя - countdown.js.Моя проблема: как я могу назвать этот JavaScript?Сформировать вид?Или из контроллера, который будет отображаться в виде?и как именно я могу обратиться к контроллеру или представлению, что функция или функции js?

спасибо

обратный отсчет js:

var javascript_countdown = function () {vartime_left = 10;// количество секунд для обратного отсчета var output_element_id = 'javascript_countdown_time';var keep_counting = 1;var no_time_left_message = 'Нет времени на обратный отсчет JavaScript!';

function countdown() {
    if(time_left < 2) {
        keep_counting = 0;
    }

    time_left = time_left - 1;
}

function add_leading_zero(n) {
    if(n.toString().length < 2) {
        return '0' + n;
    } else {
        return n;
    }
}

function format_output() {
    var hours, minutes, seconds;
    seconds = time_left % 60;
    minutes = Math.floor(time_left / 60) % 60;
    hours = Math.floor(time_left / 3600);

    seconds = add_leading_zero( seconds );
    minutes = add_leading_zero( minutes );
    hours = add_leading_zero( hours );

    return hours + ':' + minutes + ':' + seconds;
}

function show_time_left() {
    document.getElementById(output_element_id).innerHTML = format_output();//time_left;
}

function no_time_left() {
    document.getElementById(output_element_id).innerHTML = no_time_left_message;
}

return {
    count: function () {
        countdown();
        show_time_left();
    },
    timer: function () {
        javascript_countdown.count();

        if(keep_counting) {
            setTimeout("javascript_countdown.timer();", 1000);
        } else {
            no_time_left();
        }
    },
    init: function (t, element_id) {
        time_left = t;
        output_element_id = element_id;
        javascript_countdown.timer();
    }
};

} ();

// время обратного отсчета в секундах и идентификатор элемента javascript_countdown.init (3673, 'javascript_countdown_time ');

Ответы [ 2 ]

1 голос
/ 09 февраля 2011

Вы можете использовать kohana html helpers .В вашей функции контроллера или в вашем файле просмотра вы можете получить его следующим образом:

echo html::script('media/countdown.js');

Поместите оператор echo после элемента html с идентификатором "javascript_countdown_time".До закрытия </body>, если возможно.

...
<div id="javascript_countdown_time"></div>
...
<script src="/media/countdown.js"></script>
</body>
0 голосов
/ 10 февраля 2011

Вы можете сделать то, что сказал @erickb, или сделать это в своем
представлении (php)

<script src="media/countdown.js"></script>

, чтобы убедиться, что countdown.js загружен, когдастраница отображается в вашем браузере [используйте Firebug или панель разработчика в Chrome, чтобы убедиться, что она была загружена.]

Где бы вы ни хотели вызвать функции, просто вызовите их .. Дайте нам знать, как это произошло ..

...