Revo. ExtJS. Помогите плиз кто владеет. Новый


Однажды изучу, но пока не доходят руки. Очень прошу помощи у знатоков по коду, сам походу не вывезу… уже сутки просидел.

Делаю кастомное поле по мануалам. Что-то типо того: тыц
пыц

Все получается. Но дошел до момента, что никак не могу вытащить данные. С инпутом если — все ок. Но разница в том, что у меня не инпут, а див, в который подгружается информация. Т.е. в TV должно записаться innerHTML этого дива.

Вот заведомо неверный мой код:

<div id="tv{$tv->id}" name="tv{$tv->id}" class="contboxs"></div>


<script type="text/javascript">
// <![CDATA[
{literal}
MODx.load({
{/literal}
    xtype: 'textfield'
    ,name: 'tv{$tv->id}'
    ,hiddenName: 'tv{$tv->id}'
    ,transform: 'tv{$tv->id}'
    ,id: 'tv{$tv->id}'
    ,width: 300

{literal}
    ,listeners: { 'div': { fn:MODx.fireResourceFormChange, scope:this}}
});
{/literal}
// ]]>
</script>

Что подправить можно, чтоб заработало с блочным элементом?0о
27 апреля 2017, 00:34    Даниил   G+  
0    176 0

Комментарии (6)

  1. Даниил 27 апреля 2017, 09:05 # 0
    Судя по количеству ответов не только мне ЭкстЖиЭс сложноват :D
    1. Алексей 27 апреля 2017, 09:28 # 0
      Так и есть, в основном это разработчики дополнений. Из-за Ext JS на revo, некоторые выбирают evo
      1. Даниил 27 апреля 2017, 09:30 # 0
        Ахах))) По стечению обстоятельств как раз дополнение и разрабатываюXD
    2. Наумов Алексей 27 апреля 2017, 10:05 # 0
      Попробуйте записывать значение tv в input (или textarea), и повесить обработчик, который будет связывать содержимое input с div, т.е. input пусть будет первичным, а div зависеть от его значения.
      1. Даниил 27 апреля 2017, 10:09 # 0
        Ну примерно этим путем счас и иду…

        
        <input type="hidden" id="tv{$tv->id}" name="tv{$tv->id}" class="contboxs" value="{$tv->value|escape}"></input>
        <div id="contboxs{$tv->id}" name="contboxs{$tv->id}" class="contboxs"></div>
        
        
        <script type="text/javascript">
        
        // <![CDATA[
        {literal}
        
        MODx.load({
        {/literal}
            xtype: 'textfield'
            ,name: 'tv{$tv->id}'
            ,hiddenName: 'tv{$tv->id}'
            ,transform: 'tv{$tv->id}'
            ,id: 'tv{$tv->id}'
            ,value: Ext.get(contboxs{$tv->id}).dom.innerHTML
        {literal}
            ,listeners: { 'select': { fn:MODx.fireResourceFormChange, scope:this}}
        });
        {/literal}
        // ]]>
        </script>
        
        

        Только хз как его присваивать… Если вот так чекаю,

        
        jQuery('.contboxs').on('click', function(){
            value = Ext.get(contboxs{$tv->id}).dom.innerHTML;
            console.log(value);
        });
        
        

        то в консоли то что надо вижу, а через код выше не лезет упорно в value инпута
      2. Даниил 27 апреля 2017, 15:20 # 0
        Я этот ExtJS дом труба шатал… Замучался сил нет… Сделал пока на общепонятном jQuery.
        Конечно, если найду в дальнейшем способ, хотелось бы все таки по нормальному.
        Так что все равно актуально и вопрос открыт!

        
        <input type="hidden" id="tv{$tv->id}" name="tv{$tv->id}" class="contboxs" value="{$tv->value|escape}"></input>
        <div id="contboxs{$tv->id}" name="contboxs{$tv->id}" class="contboxs"></div>
        
        
        <script type="text/javascript">
        
        // <![CDATA[
        {literal}
        MODx.load({
        {/literal}
            xtype: 'container'
            ,name: 'contboxs{$tv->id}'
            ,hiddenName: 'contboxs{$tv->id}'
            ,transform: 'contboxs{$tv->id}'
            ,id: 'contboxs{$tv->id}'
        {literal}
            ,listeners: { 'select': { fn:MODx.fireResourceFormChange, scope:this}}
        });
        {/literal}
        // ]]>
        
        
        
        
        $('.contboxs').bind("DOMSubtreeModified",function(){
            var cbtext = $(this).html();
            $('#tv' + {$tv->id}).val(cbtext);
        });
        
        $( document ).ready(function() {
           var tvtext = $('#tv' + {$tv->id}).val();
           $('#contboxs' + {$tv->id}).html(tvtext);
        });
        
        </script>
        
        
        Вы должны авторизоваться, чтобы оставлять комментарии.