Mootools падказкі не адлюстроўваецца на ўтрыманне Request.HTML

У мяне паўсталі некаторыя праблемы з даданнем саветаў да Request.HTML функцыя. У мяне ёсць DIV, які абнаўляе яго ўтрыманне кожныя 30 секунд. Змест вярнуўся мае шэраг дзівы з імем класа ".LiveReader".

Вось JS я павінен ініцыяваць ўтрыманне

            window.addEvent('domready', initLiveContent);

            function initLiveContent()
            {
                    var tips = new Tips('.liveReader');
                    (function() { refreshPanel() }).periodical(30000);
                    refreshPanel();
            }

            function refreshPanel()
            {
                    var myRequest = new Request.HTML({
                             url: '/inc/liveFeed.aspx',
                             update: $('liveContent'),
                             method: 'get',
                             onComplete: function() {
                                 tips.attach('.liveReader');
                             }
                    });
                    myRequest.send();
            }

Такім чынам, HTML з'яўляецца

<div id="liveContent">
    <div id="item1" class="liveReader" title="item 1">
Text 1

</div> <div id="item2" class="liveReader" title="item 2">
Text 2

</div> </div>

Тым не менш, усё, што я бачу гэта нармальная назва падказкі! любыя ідэі? !!

1

1 адказы

Ваша праблема з зменнымі аглядным.

Ваш OnComplete апрацоўшчык выкарыстоўвае спасылку парады , у той час як гэтая пераменная з'яўляецца лакальнай для initLiveContent функцыі. Такім чынам, OnComplete выклік не выконваецца.

Такім чынам, першы наканечнік (не каламбур): заўсёды пачынаецца з фактычным адладчыкам, і ўсталяваць яго разарваць на ўсе выключэнні. У адваротным выпадку, бо памылка ( «нявызначаная пераменная парады ») кінута ўнутры зваротнага выкліку, ён не будзе адлюстроўвацца ў стандартнай кансолі.

Затым два спосабу выправіць код:

  1. Make tips a shared variable. You might for example declare it in a function that would be the second argument to your window.addEvent call, and then reference it in both initLiveContent and your onComplete callback.

  2. Much more Mooish  :)  Use Element storage to dynamically retrieve your Tips instance from your updated container. That is:

    function initLiveContent()
    {
        var tips = new Tips('.liveReader');
           //… your previous code …
        $('liveContent').store('tip', tips);    
    }
    
    function refreshPanel()
    {
        var destination = $('liveContent');
        var myRequest = new Request.HTML({
            update: destination,
               //… your previous code …
            onComplete: function() {
                destination.retrieve('tip').attach('.liveReader');
            }
        });
        myRequest.send();
    }
    

:)

2
дададзена
дзіўны - ён працаваў ласунак - дзякуй!
дададзена аўтар Matt Facer, крыніца