Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 禁用渲染中的pointermode时,moon.inputDecorator“第二次”上没有聚光灯_Javascript_Enyo_Spotlight - Fatal编程技术网

Javascript 禁用渲染中的pointermode时,moon.inputDecorator“第二次”上没有聚光灯

Javascript 禁用渲染中的pointermode时,moon.inputDecorator“第二次”上没有聚光灯,javascript,enyo,spotlight,Javascript,Enyo,Spotlight,我在开发示例应用程序时遇到了这个问题。我正在共享的JSFIDLE链接有一个基本功能,即单击按钮打开弹出窗口。因为渲染函数在创建时只被调用一次,所以禁用pointermode和spot第一次工作。但为什么每次enyo都需要禁用指针模式并将spot设置为组件开发人员想要的位置呢 我的要求是,每当弹出窗口打开对话框时,聚光灯都应位于我指定的组件上。它可能是popup中的第一个组件,或者是开发者指定的组件,我可能不知道有其他方法可以做/接近相同的事情,所以请让我知道 以下是JSFIDLE链接: 除了这样

我在开发示例应用程序时遇到了这个问题。我正在共享的JSFIDLE链接有一个基本功能,即单击按钮打开弹出窗口。因为渲染函数在创建时只被调用一次,所以禁用pointermode和spot第一次工作。但为什么每次enyo都需要禁用指针模式并将spot设置为组件开发人员想要的位置呢

我的要求是,每当弹出窗口打开对话框时,聚光灯都应位于我指定的组件上。它可能是popup中的第一个组件,或者是开发者指定的组件,我可能不知道有其他方法可以做/接近相同的事情,所以请让我知道

以下是JSFIDLE链接:


除了这样做的初始重点,有没有其他方法实现同样的目标

您必须禁用指针模式的原因是,当用户移动指针时,您无法成功地发现某些内容,因为这可能会导致该点从悬停的控件跳到其他位置,然后再跳回来。如果禁用指针模式,则会发生这种情况

您可以在不将指针模式设置为false的情况下调用spot,如果用户至少在最新代码中切换回5路,则spot控件将成为焦点控件

编辑:我应该补充一点,当moon.input有焦点时,它不会显示聚光灯高光。如果希望输入立即“可输入”,则可能需要将焦点设置在输入上。此外,您还应该查看moon.Popup的源代码,因为它进行了一些特殊处理,以防止聚光灯从弹出窗口漏出

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);