Sencha touch: как обновить метку ввода - PullRequest
0 голосов
/ 05 мая 2011

У меня есть Ext.form.Select, и я хочу динамически обновлять его метку при изменении значения.Как бы просто это ни звучало, он отказывается работать:

var musicInCarInput = new Ext.form.Select({
    options: [
        {text: "Yes", value: "yes"},
        {text: "Maybe", value: "maybe"},
        {text: "No", value: "no"}
    ],
    name: "music",
    value: "maybe",
    label: '<img src="/static/images/comfort_icons/music_maybe_small.png" />',
    listeners: {
        change: function()
        {
            musicInCarInput.label = '<img src="/static/images/comfort_icons/music_'+musicInCarInput.getValue()+'_small.png" />';
        }
    }
});

Я пытался вызвать doLayout() после изменения метки, но мне сказали, что у ввода нет свойства doLayout, хотя и задокументировано так.

Есть идеи у кого-нибудь?

Ответы [ 2 ]

0 голосов
/ 05 мая 2011

Правильный ответ пришел ко мне от realjax на форумах SenchaTouch: в select есть свойство (которое мне стыдно, что я пропустил) с именем labelEl, которое можно использовать для обновлениятюк вот так:

musicInCarInput.labelEl.setHTML([your hmtl stuff]) 
0 голосов
/ 05 мая 2011

Это не отвечает на ответ напрямую, потому что я не нашел, как обновить ярлык, поэтому дальнейшие ответы приветствуются.Решение, которое я нашел для меня, состоит в том, чтобы получить изображение этикетки и идентификатор и обновить его.

Если кому-то еще это нужно, вот код:

var musicInCarInput = new Ext.form.Select({
    options: [
        {text: "Yes", value: "yes"},
        {text: "Maybe", value: "maybe"},
        {text: "No", value: "no"}
    ],
    name: "music",
    value: "maybe",
    label: '<img id="music_input_label" src="/static/images/comfort_icons/music_maybe_small.png" />',
    listeners: {
        change: function()
        {
            el = Ext.getDom('music_input_label');
            el.setAttribute("src", '/static/images/comfort_icons/music_'+this.getValue()+'_small.png')
        }
    }
});
...