Нет прожектора на moon.inputDecorator ВТОРОЙ РАЗ при отключении режима указателя при рендеринге

Я столкнулся с этой проблемой при разработке примера приложения. Ссылка jsfiddle, которой я делюсь, имеет базовую функциональность открытия всплывающего окна при нажатии кнопки. Поскольку визуализированная функция вызывается только один раз при создании, таким образом, отключение режима указателя и спота работает в первый раз. Но почему enyo каждый раз необходимо отключать режим указателя и устанавливать место на то, что хочет разработчик компонента.

Мое требование состоит в том, что всякий раз, когда всплывающее окно открывает диалоговое окно, центр внимания должен быть на компоненте, который я указал. Это может быть первый компонент во всплывающем окне или указанный разработчиком. Возможно, я не знаю других способов сделать то же самое, поэтому, пожалуйста, дайте мне знать.

Вот ссылка jsfiddle:

http://jsfiddle.net/pL1cawnw/1/

enyo.kind({
name:'app',
kind:'enyo.Control',
components:[
    {name:'popupBtn',kind:'moon.Button', content:'Open', ontap:'btnTapped'},
    {name:'popupBtn2',kind:'moon.Button', content:'Dummy'},
    {name:'inputPopUp', kind: 'inputPop'}
],
btnTapped:function(){
    this.$.inputPopUp.show();
},
rendered: function(){
    this.inherited(arguments);
    enyo.Spotlight.setPointerMode(false);
    enyo.Spotlight.spot(this.$.popupBtn);    
}
});
enyo.kind({
name:'inputPop',
kind:'enyo.Popup',
center:true,
scrim:true,
floating:true,
components:[
    {name:'inputDecorator', spotlight: true, kind:'moon.InputDecorator', style:'width:200px; height: 80px', components:[
        {kind:'moon.Input', name:'input', dismissOnEnter:true}
    ]} 
],
create:function(){
    this.inherited(arguments);
},
rendered: function(){
    this.inherited(arguments);
    enyo.Spotlight.setPointerMode(false);
    enyo.Spotlight.spot(this.$.inputDecorator);
}
});
new app().renderInto(document.body);

Помимо этого способа первоначальной фокусировки, есть ли другой способ добиться того же?


person Rakesh_Kumar    schedule 22.12.2014    source источник


Ответы (1)


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

Вы можете вызвать спот, не устанавливая режим указателя в false, и элемент управления с запятыми будет сфокусированным элементом управления, если пользователь переключится обратно на 5-сторонний (по крайней мере, в последнем коде).

Редактировать: я должен добавить, что когда лунный ввод имеет фокус, он не будет отображать подсветку прожектора. Возможно, вам придется установить фокус на вводе, если вы хотите, чтобы он сразу стал «типизируемым». Кроме того, вы должны посмотреть на источник для moon.Popup, так как он выполняет некоторую специальную обработку, чтобы предотвратить утечку прожектора из всплывающего окна.

person Pre101    schedule 23.12.2014