2014-12-22 6 views
0

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

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

Вот 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); 

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

ответ

0

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

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

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