Extjs вложенных данных просмотра выберите узел - PullRequest
0 голосов
/ 15 марта 2012

У меня есть представление данных со следующим tpl.

  <tpl for=".">
    <tpl for="departments">
                 {title}
    </tpl>
    <tpl for="records">
        <div class="thumb-wrap">
           {name}
        </div>
    </tpl>
</tpl>

, и мой json выглядит так

        reader : new Ext.data.JsonReader(
         {
            root : 'data', 
         },
         [ 
            'departments' ,
            'records'
          ]
        ),

и мой селектор элементов на моих записях

itemSelector : 'div.thumb-wrap',

а это мои данные json

{
"success": true,
"data": [
    {
        "departments": [
            {
                "title": "name"
            }
        ],
        "records": [
            {
                "name": "name"
            },
            {
                "name": "name"
            }
        ]
    },
    {
        "departments": [
            {
                "title": "name"
            }
        ],
        "records": [
            {
                "name": "name"
            }
        ]
    }
]

}

как мне выбрать мои записи в представлении данных с extjs?и как я могу выбрать Records ?я использовал getSelectedRecords (), но он возвращает массив отделов и записей.Тпй

Ответы [ 2 ]

1 голос
/ 15 марта 2012

Я почти уверен, что getSelectedRecords () устарела в ExtJS 4.

Вы можете попробовать сделать что-то вроде этого:

var records = data.getRecords();

Это вернет Ext.data.Model[]. Затем вы можете получить доступ ко всем свойствам, как к обычной модели:

record.get('departments');
record.get('records');
0 голосов
/ 16 марта 2012

Вы работаете против системы с вашей структурой записей. DataView хочет, чтобы одна запись соответствовала одному выбираемому элементу. Но вы хотите иметь несколько выбираемых элементов внутри одной записи. Не работает - API не был разработан для такой вещи.

Ваши параметры:

  • Создайте отдельный компонент DataView для каждого набора записей.
  • Создайте свой собственный компонент DataView, который может обрабатывать группировки.
  • Использовать Grid с GroupingView. Вы должны изменить свою структуру записи на что-то вроде ниже, но это самый простой вариант, чтобы начать работать. Хотя ... вам придется пожертвовать немалой гибкостью, предоставляемой DataView.

    "data": [
        {
            {
                "department": "Department 1"
                "name": "record 1"
            },
            {
                "department": "Department 1"
                "name": "record 2"
            },
            {
                "department": "Department 2"
                "name": "record 1"
            },
            {
                "department": "Department 2"
                "name": "record 2"
            },
        ]
    }
    
...