Обновление элемента списка в Sencha Touch после загрузки - PullRequest
2 голосов
/ 03 ноября 2010

Я использую Sencha Touch для создания веб-мобильного приложения.Я не очень знаком с тем, как работает EXTJS.Я настроил свой список следующим образом:

sink.Structure = [{
        text: 'Name'
    },
    {
        text: '&nbsp;&nbsp;&nbsp;<?php echo $name; ?>'
    },
    {
        text: 'Friend'
    },
    {
        text: '&nbsp;&nbsp;&nbsp;<?php echo $friend; ?>'
    },
    {
        text: 'Shop'
    },
    {
        text: '&nbsp;&nbsp;&nbsp;<?php echo $shop; ?>'
    }];

            Ext.regModel('Demo', {
            fields: [
                {name: 'text',        type: 'string'},
                {name: 'source',      type: 'string'},
                {name: 'preventHide', type: 'boolean'},
                {name: 'animation'},
                {name: 'card'}
            ]
        });

        sink.StructureStore = new Ext.data.TreeStore({
            model: 'Demo',
            root: {
                items: sink.Structure
            },
            proxy: {
                type: 'ajax',
                reader: {
                    type: 'tree',
                    root: 'items'
                }
            }
        });

Так что это прекрасно отображает список, именно то, что я хочу, но как мне изменить значение строки, которая отображает $ name;

При начальной загрузке у меня есть значение в переменной PHP, но если пользователь изменяет его, я хочу, чтобы оно изменило значение этого.Нужно ли переписывать всю структуру?

В Jquery я мог бы просто дать элементу идентификатор и затем изменить его содержимое .html.Но я заметил, что, как это структурировано, мой элемент списка не имеет никакого идентификатора, который я мог бы использовать для ссылки на него.Любой совет помог бы, спасибо!

ОБНОВЛЕНИЕ: Поэтому я добился некоторого прогресса в этом, вместо того, чтобы выводить переменную PHP внутри структуры списка, я печатаю переменную Javascript с именем name, которая изначально устанавливается как переменная PHP,Я также поместил настройку sink.Structure в функцию, которая принимает значения и затем должна сбрасывать их, но это не так.Я попытался сделать функцию включающей сток. StructureStore, так как кажется, что это то, что рендерит список (может быть, это предположение), а также только список массива sink.Structure, но, кажется, ничто не влияет на список, который уже был установленПожалуйста, помогите!

Ответы [ 3 ]

2 голосов
/ 05 ноября 2010

Списки привязаны к данным. Обновите данные в базовом хранилище данных, и любые списки, связанные с хранилищем данных, автоматически обновят свой пользовательский интерфейс.

0 голосов
/ 04 января 2011
  1. Вы должны обновить свой Data.Store новыми значениями.
  2. YourList.bindStore (YourStore); * +1004 *
  3. Вторая строка кода автоматически заполняет список.
0 голосов
/ 04 ноября 2010

Я должен сказать, что разочарован тем, как Sencha Touch работает в этом отношении, кажется, что список отображается при первой загрузке и не может быть повторно отображен, потому что он динамически создает все элементы div с классом "x- Элемент списка." Я пробовал многочисленные методы, чтобы попытаться избавиться от списка и воссоздать новый, но безрезультатно.

ЕДИНСТВЕННЫМ способом, которым мне удалось заставить это работать, было размещение тега div внутри элемента списка с идентификатором, а затем использование JQuery для выбора элемента и изменения его HTML. Это первое приложение, которое я сделал с Sencha Touch, и я надеюсь, что оно последнее.

Единственная причина, по которой мы пошли с этим, заключается в его совместимости с Android, но при загрузке приложения в эмуляторе Android (2.2) ни одна из анимаций прокрутки страницы все равно не работала! Кроме того, протестировано на Nexus One, он загружался быстрее, но слайд-переходы отсутствовали. Хотя у Sencha есть еще несколько возможностей, JQTouch, безусловно, является моим предпочтением, когда речь заходит о веб-мобильных приложениях. Извините, просто пришлось снять это с моей груди:)

...