Я столкнулся с этой проблемой при разработке примера приложения. Ссылка 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);
Помимо этого способа первоначальной фокусировки, есть ли другой способ добиться того же?