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о
Даниил
26 апреля 2017, 21:34
417
0

Комментарии: 6

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